ROSでdesktop-fullをインストールすると自動でOpenCVがインストールされます。
それを使用してC++からOpenCVを使ってみます。
今回の例では画像を読み込み、表示するといった簡単な処理を行います。
まずパッケージを作成します。
cd ~/catkin_ws/src
catkin_create_pkg opencv_test
cd opencv_test
mkdir src
そして、opencv_test/src内で画像を読み込み出力するプログラムを作成します。
src/main.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, const char * argv[])
{
Mat img = imread( "image.png" );
imshow("", img );
waitKey(0);
return 0;
}
以下コマンドでサンプル画像image.png
をダウンロードします。
wget https://github.com/hoshianaaa/TestFiles/raw/master/image.png
CMakeLists.txtを次のように作成します。
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2)
project(opencv_test)
find_package(OpenCV REQUIRED) #追加
find_package(catkin REQUIRED)
catkin_package(
)
include_directories(
include
${OpenCV_INCLUDE_DIRS} #追加
)
add_executable(main src/main.cpp)
target_link_libraries(main
${OpenCV_LIBRARIES} #追加
)
ビルドと実行をします。
cd ~/catkin_ws
catkin build #または catkin_make
source ~/catkin_ws/devel/setup.bash
cd ~/catkin_ws/src/opencv_test/src
rosrun opencv_test main
実行コマンドrosrunはopencv_test/src内で行うことに注意してください。
すると"image.jpg"が出力されます。
追加サンプル
上のサンプルではなく以下のプログラムのように単色画像生成すると画像を用意する手間を省くことができます。
src/main.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, const char * argv[])
{
//Mat img = imread( "image.jpg" );
//単色画像の生成(参考:http://opencv.jp/cookbook/opencv_mat.html の 「cv::vecを使う」
cv::Mat_<cv::Vec3b> img(300, 300, cv::Vec3b(0,200,0)); // 追加
imshow("", img );
waitKey(0);
return 0;
}
実行結果