2016-05-11 27 views
0

我貼在ROS這個問題的答案論壇,但沒有得到一個答案作爲然而,所以這裏的對衝投注歷史紀錄。C++ OpenCV的設置對ROS玉

我已成功地建立了具有ROS使用Eclipse。 我已經成功地設置了與opencv一起使用的eclipse(作爲所有連接器dohickeys的C++項目)。

我還沒有找到有關設置opencv使用ros的全面文檔。有很多關於它的使用的教程,但我不知道我應該把什麼放入manifest.xml和CMakeLists.txt中。

乾脆把:

find_package(OpenCV的必填)

在清單和CMakeLists分別不工作,並給了我,當我嘗試預見的錯誤信息使用rosmake命令構建它:在pkg-config搜索路徑中未找到軟件包opencv3。

那我在這裏做什麼?

回答

1

我們有一個使用image_transport訂閱圖像的話題,將其轉換爲OpenCV的類型,然後在內部使用了OpenCV直接與圖像工作靛藍包。該場景與Using CvBridge To Convert Between ROS Images And OpenCV Images教程的示例ROS節點幾乎相同。

有作爲ROS的靛藍opencv3被安裝在系統上,一旦有幾個問題。我們花了一些時間才弄明白,因爲opencv3軟件包作爲另一個軟件包的依賴項安裝在一個完全不同的項目中。

1 - 在http://wiki.ros.org/vision_opencv#Using_OpenCV_in_your_ROS_code CMake的片段中的線

find_package(OpenCV REQUIRED) 

總是發現在/ opt/ROS /靛藍OpenCV的3安裝從現在開始,這是不好的。我們觀察到所有類型的後果,包括編譯錯誤,鏈接器錯誤,段錯誤,特別是與ros-indigo-cv-bridge相結合,這與OpenCV 2.4.8的系統安裝相關。

2 - 解決方法是添加一個特定版本的要求,像

find_package(OpenCV 2.4.8 EXACT REQUIRED) 

還是要靠cv_bridge或image_geometry作爲ROS indigo migration guide推薦鏈接到正確版本的OpenCV的間接影響。

即使您以某種方式可以避免cmake在/ opt/ros/indigo中選擇OpenCV 3安裝,預處理器仍然會更喜歡/ opt/ros/include/opencv2中找到的頭文件(由ros-indigo- opencv3)在/ usr/include目錄上只要找到一個

#include <opencv2/core/core.hpp> 

cv_bridge.h:43,因爲有些依存度將始終將/ opt/ROS /靛藍到包括路徑從現在開始/ opencv2。

我迄今發現的唯一的解決方法是以下cmake的片段:

find_package(OpenCV 2.4.8 EXACT REQUIRED) 
include_directories(
include 
${OpenCV_INCLUDE_DIRS}  # /usr/include/opencv;/usr/include 
${catkin_INCLUDE_DIRS}  # contains /opt/ros/indigo/include 
# ...other include directories 
) 

確保OpenCV的2.4.8頭在/ usr /包括任何其它軟件包的頭前是有序的。

ROS玉石的情況可能相同。

+0

好的。我將在大約30分鐘後回家,以便了解這是否是這裏發生的事情。我完全重新安裝了ros和opencv,發現desktop-full不包括ros-jade-opencv-3,所以我打算看看這個軟件包不存在是否會起作用。 – ThaHypnotoad

+0

雖然我會檢查兩個,所以我應該在大約一個半小時後回來,結果或缺乏。 – ThaHypnotoad

+0

我只想提一下:謝謝你的文字牆。很難找到很多ROS的凝聚力文獻。現在是更新。只是沒有安裝ros的3.1庫讓我的東西變得花哨。 (正如你所提到的,依靠cv_bridge來導入它)現在當然,如果我想在3.0和3.1中使用奇特的新表面匹配工具,我該怎麼辦?這似乎有點難以處理。我將把這個答案標記爲更新併爲此提出一個單獨的問題。再次感謝。 – ThaHypnotoad

0

好的,我不打算把這個設置爲正確的答案,直到我知道實際發生了什麼,但是如果我擺脫了opencv3依賴(或opencv2,它們都表現相同),這一切工作正常。

雖然嚴重,可能有人用半十多年的經驗告訴我,這是怎麼回事呢?

+0

好吧,現在我有一個問題,這是非常類似於這個:http://stackoverflow.com/questions/29479379/opencv-linking-problems-with-ros – ThaHypnotoad

+0

我要看看這裏發生了什麼在早上。 – ThaHypnotoad