ROS勉強記その9:OpenCV(opencv-app)を使ってraspicam_nodeで撮影した画像を画像処理をする

投稿日:2023年5月16日
最終更新日:2023年5月16日

Raspberry Pi カメラモジュールで撮った画像をopencv_appsで画像処理してみる

前回までのところで、raspicam_nodeを使ってROSでRaspberry Piカメラモジュールのカメラで画像を取得できるようになった。今回は、有名なオープンソースの画像処理ライブラリであるOpenCVを使って、カメラの画像を画像処理してみる。

なお、今回はROSでOpenCVを使えるパッケージであるopencv_appsを使うことにする↓

http://wiki.ros.org/opencv_apps

 

実行環境

Raspberry Pi 4 Model B / 4GB

Ubuntu Server 20.04.5 LTS(64-bit)

ROS Noetic Ninjemys

Raspberry Pi カメラモジュール Rev1.3

 

opencv_appsをインストールする

まずはopencv_appsをインストールする。ubuntuをインストールしたラズパイを起動して、ターミナルから以下のコマンドを実行してnoetic用のopencv_appsをインストールする。

sudo apt install ros-noetic-opencv-apps

インストールが問題なく終了すれば準備は完了。

 

raspicam_nodeを起動する

まず、以前と同じ手順でraspicam_nodeを起動するが、raspicam_nodeのlaunchファイルをデフォルトで実行すると取得した画像は圧縮される。opencv_appsで画像処理する場合は圧縮する前のraw画像じゃないとうまくいかなかったので、以下のようにenable_raw:=trueオプションをつけてlaunchファイルを実行する。

roslaunch raspicam_node camerav1_1280x720.launch enable_raw:=true

ここでいったん以下のコマンドでimage Viewを起動してraspicam_nodeの画像を見てみる。

rqt_image_view

いつものごとく、今回も青いミニカーを被写体にしている。

今回はopencv_appsのlaunchファイルをつかって、edge_detectionのデモを実行してみる。別のターミナルを起動し、

roslaunch opencv_apps edge_detection.launch image:=/raspicam_node/image/

を実行すると、ウィンドウが起動して以下のようにエッジ検出された画像が表示される。ミニカーの輪郭や、カーテンの折り目が検出されていることがわかる。なお、色々とパラメータを変えてlaunchファイルを実行することもできる。

edge detectionの他にも色々とデモが準備されているので、次回以降もopencv_appsを使って色々と遊んでいきたい。

 

ROS勉強記まとめ

この勉強記は以下のページでまとめてます。

ROS(Robot Operating System)勉強記 まとめ


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください