opencv-3.3.0 cv_bridge === 環境: ubuntuMATE raspberry pi3 /usr/local/lib/ 裡面同時有opencv-3.1.0, opencv-3.3.0 #### 問題: 程式裡面同時要用兩種版本opencv, 比如a function 用opencv-3.3.0 b function用opencv3.1.0 會有這種需求是因為cv_bridge kinetic版本是opencv-3.1.0編的 假使要使用最新3.3.0的函式(我想寫一個dnn ROS package) #### 情形 cv_bridge 在3.3.0build from source 一直有錯誤 就想說有沒有別招XD 跟這個討論很相關的 https://github.com/ros-perception/vision_opencv/issues/162 錯誤 ```txt= Project 'cv_bridge' specifies '/opt/ros/kinetic/include/opencv-3.2.0-dev' as an include dir, which is not found. It does neither exist as an absolute directory nor in '/opt/ros/kinetic//opt/ros/kinetic/include/opencv-3.2.0-dev'. Ask the maintainer 'Vincent Rabaud <vincent.rabaud@gmail.com>' to fix it. ``` 這是找不到header的錯誤 #### 想法 3.3.0在pkg-config有設定 能夠用pkg-config指定opencv版本,然後單獨去鍊結 libcv_bridge.so? 現在是編譯時候會當掉 /opt/ros/kinetic/lib/libcv_bridge.so ```Cmake= cmake_minimum_required(VERSION 2.8.3) project(ssdmobilenet) find_package(catkin REQUIRED COMPONENTS cv_bridge image_transport roscpp rospy sensor_msgs std_msgs ) #find_package(OpenCV 3 REQUIRED) find_package(PkgConfig) pkg_check_modules(OpenCV REQUIRED opencv) catkin_package( INCLUDE_DIRS include CATKIN_DEPENDS cv_bridge ) include_directories( ${catkin_INCLUDE_DIRS} # ${OpenCV_INCLUDE_DIRS} ) add_executable( ssdmobilenet src/ssd_mobilenet_object_detection.cpp) target_link_libraries( ssdmobilenet ${catkin_LIBRARIES} # ${OpenCV_LIBRARIES} ) ``` ref: https://github.com/ros-perception/vision_opencv/issues/162 https://answers.ros.org/question/261819/problem-with-catkin_make/ https://github.com/jsk-ros-pkg/jsk_recognition/issues/2033 https://hackmd.io/s/S1oIlawDb# ###### tags: `opencv3.3.0`