実験 2 ROS と OpenCV の組み合わせの例 - 顔認識

1. 実験原理:

Opencv ライブラリは、BSD ライセンスの下でリリースされたクロスプラットフォームのオープン ソース コンピュータ ビジョン ライブラリです。opencv ライブラリに基づいて、マシン ビジョンのアプリケーションを開始するのに非常に便利です。ros には、opencv ライブラリと関連インターフェイス関数パッケージが統合されています。顔認識の目的は、
入力画像内の顔の位置、サイズ、姿勢を特定することです。多数のサンプルの Haar 特徴が分類器のトレーニングに使用され、その後、トレーニングされたカスケード分類器カスケードがパターン マッチングのために呼び出されます。次に、2 次元の境界ボックスを取得します。

2. 実験手順:

<1> opencvとシリアルポート機能パッケージのインストール

$ sudo apt-get install ros-kinetic-vision-opencv libopencv-dev python-opencv

インターフェース関数パッケージの機能は、ROS上の画像データをopencv形式の画像に変換し、opencvライブラリを呼び出して各種画像処理を行うことです。

<2> opencv シリアル ポートが正常にインストールされているかどうかをテストします。

(例として USB カメラを使用します。宿題: orbbec を使用して同じ機能を実現します)
USB カメラをオンにします。

$ roslaunch robot_vision usb_cam.launch    (usb摄像头)

RQTを開始する

$ rosrun rqt_image_view rqt_image_view

この時点では、image_raw を選択し
ここに画像の説明を挿入
、test を使用して効果を確認します。

$ rosrun robot_vision cv_bridge_test.py

USB カメラ使用時の test.py のデータ:
ここに画像の説明を挿入
orbbec 使用時にこれを変更する必要がある場合: /amera/rgb/image_raw
ここに画像の説明を挿入
このコマンドは、以下に示すように、別のビデオ ウィンドウを開始します:
ここに画像の説明を挿入
このウィンドウには、opencv を介した赤い点が表示されます。変換後、小さな赤い点を描画します。
<3> USBカメラドライバを呼び出す

$ roslaunch robot_vision usb_cam.launch    (usb摄像头)
$ roslaunch astra_launch astra.launch    (orbbec摄像头)

<4> フェイス機能の起動

$ roslaunch robot_vision face_detector.launch 

⑤ rqt表示機能の起動

$ rosrun rqt_image_view rqt_image_view

画像の説明を追加してください

3. プログラム分析:

face_detector.launch ファイルのメインプログラムは face_detector.py ソースプログラムであり、プログラムの主な内容は次のとおりです

#create cv_bridge
#haar 特徴のカスケード テーブル XML ファイルを取得します。ファイル パスは起動ファイルに渡されます。 #
カスケード テーブルを使用して haar 特徴検出器を初期化します
。 #カスケード テーブル パラメーターを設定し、顔認識を最適化します。 #
サブスクリプション rgb 形式の画像データ サブスクライバーを初期化します。
ROS コールバック関数 #ROS
の画像データを opencv 形式の画像に変換
#グレースケール画像を作成
#バランスの取れたヒストグラムを作成
#顔を検出してみる
#opencv ウィンドウで顔をフレームに収める #
認識された画像を公開する
顔認識
#最初に一致する正面顔モデル
# 正面モデルが一致しない場合は、側面モデルの一致を試みます

おすすめ

転載: blog.csdn.net/yechen1/article/details/130409655