極楽とんぼのロボット製作記

情報工学系大学院生がロボットとその周辺技術や身の回りの出来事について紹介するブログ

【ROS】OpenCV2に依存に依存しているパッケージの利用

ROSのとあるパッケージを試しに動かしてみようとしたときに出会ったOpenCV関連のエラーです。 ちなみに動かそうとしたパッケージはこれです。 github.com

エラー内容

パッケージをビルドすると以下のようなエラーが出ます。

(find_package): Could not find a configuration file for package  
"OpenCV" that is compatible with requested version "2".  
The following configuration files were considered but not accepted:  
/opt/ros/kinetic/share/OpenCV-3.3.1-dev/OpenCVConfig.cmake, version: 3.3.1  

対処策

下記URLからOpenCV2.4をDownloadします。(Download Zipをクリック) github.com ダウンロードしたら以下を実行します。

$ unzip opencv-2.4.zip
$ cd libopencv2.4
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

結局何に依存しているのか?

試しにエラーが出るプログラムのCMakeLists.txtの中身を find_package(OpenCV 2 REQUIRED) → find_package(OpenCV REQUIRED)
のように編集して、ビルドしてみるとコンパイルは通りますがリンクができなくなるようです。

fatal error: opencv2/gpu/gpu.hpp: そのようなファイルやディレクトリはありません  compilation terminated.  
external/spencer_people_tracking/detection/rgbd_detectors/pcl_people_detector/CMakeFiles/detect_people.dir/build.make:62:  
ターゲット 'external/spencer_people_tracking/detection/rgbd_detectors/pcl_people_detector/CMakeFiles/detect_people.dir/src/detect_people.cpp.o' のレシピで失敗しました  
make[2]: *** [external/spencer_people_tracking/detection/rgbd_detectors/pcl_people_detector/CMakeFiles/detect_people.dir/src/detect_people.cpp.o]  
エラー 1 CMakeFiles/Makefile2:11136: ターゲット 'external/spencer_people_tracking/detection/rgbd_detectors/pcl_people_detector/CMakeFiles/detect_people.dir/all' のレシピで失敗しました 

この見つからなかったと言われているopencv2/gpu/gpu.hppは何者なのか気になりますね。どうやらOpenCV3には実装されていないプログラムのようです。 answers.opencv.org OpenCV: gpu.hpp File Reference

参考サイト

GitHub - spencer-project/spencer_people_tracking: Multi-modal ROS-based people detection and tracking framework for mobile robots developed within the context of the EU FP7 project SPENCER.
Where to find /opencv2/gpu/gpu.hpp in Opencv 3.1.0 - OpenCV Q&A Forum
OpenCV: gpu.hpp File Reference