【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