2016-05-17 80 views
1

到目前爲止無法使用cv_bridge。正在此編譯錯誤如何將opencv鏈接到CMake的ROS indigo(catkin)(ubuntu 14.04)

CMake Error at /opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake:106 (message): 
    Project 'cv_bridge' specifies '/usr/include/opencv' as an include dir, 
    which is not found. It does neither exist as an absolute directory nor in 
    '/opt/ros/indigo//usr/include/opencv'. Ask the maintainer .. 

可能是在我的CMake(......?)

cmake_minimum_required(VERSION 2.8.3) 
project(XY) 

find_package(catkin REQUIRED COMPONENTS 
cv_bridge 
image_transport 
roscpp 
rospy 
std_msgs 
) 

#set(OpenCV_DIR "/usr/local/lib/opencv") 
find_package(OpenCV REQUIRED core imgproc highgui PATHS /home/polar/soft/lib/opencv/opencv-3.1.0/cmake) 
include_directories(${OpenCV_INCLUDE_DIRS}) 

if(OpenCV_FOUND) 
# include_directories(${Boost_INCLUDE_DIRS}) 
message("\n\n OpenCV found!!!! \n\n") 
endif() 

問題上的問題造成任何想法,如何解決這個問題嗎? 我使用ROS富爾特在過去,從來沒有遇到過這種問題....

+0

你是否相應地將它添加到'package.xml'中? ' cv_bridge'' cv_bridge' – Vtik

+0

是的。事實上,當我創建包 – Courier

+0

奇怪的時候指定了cv_bridge的需要,試試這個答案http://stackoverflow.com/questions/36613363/ros-cant-find-opencv-the-path-usr-local – Vtik

回答

1

最後,我修改過的文件/opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake

我改變

set(cv_bridge_FOUND_CATKIN_PROJECT TRUE) 

if(NOT "include;/usr/include/opencv;/usr/include " STREQUAL " ") 
    set(cv_bridge_INCLUDE_DIRS "") 
    set(_include_dirs "include;/usr/include/opencv;/usr/include") 

set(cv_bridge_FOUND_CATKIN_PROJECT TRUE) 
if(NOT "include;/usr/local/include/opencv" STREQUAL " ") 
    set(cv_bridge_INCLUDE_DIRS "") 
    set(_include_dirs "/usr/local/include/opencv;/usr/include;/usr/local/include") 

在其實我只是將usr/include更改爲/usr/local/include。這解決了我的問題。但我不認爲這是正確的做法(?)。

+0

我得到一個錯誤,使[2]:***沒有規則,使目標'/usr/lib/x86_64-linux-gnu/libopencv_ts.so.2.4 .8','/home/johann/catkin_ws/devel/lib/libimage_converter.so'需要。停止。按照你的步驟,你有類似的東西嗎? – JTIM

+0

我之前有過這個問題。我結束了一切,重新安裝opencv。你從源代碼安裝了opencv,並且安裝了ros(完整桌面)?如果是這樣,請刪除ROS並卸載獨立的opencv(使用sudo make uninstall,make clean等)。重新安裝ROS和opencv。但是請注意,使用'./configure --prefix = DIFF_PATH'安裝opencv,其中DIFF_PATH應該與/ usr/*不同,以避免任何系統混淆。例如。我通常設置'DIFF_PATH =〜/ soft/lib/opencv/build'。希望這可以幫助。 – Courier