ros程式碼中新增使用opencv庫,cv::Mat和ros image之間的相互轉換
阿新 • • 發佈:2019-02-17
ros中很多時候要用到圖形處理,這時就需要使用opencv庫,本篇主要將怎麼在ros現成node上使用opencv的庫函式
1.修改編譯指令碼
第一步:在node所在的CMakefile檔案中opencv庫查詢,例如:
find_package( OpenCV REQUIRED COMPONENTS
core
highgui
imgproc
)
或者直接
find_package( OpenCV REQUIRED )
為的是在編譯前到環境變數配置的路徑中找到opencv package,如果找不到,那需要檢視下LD_LIBRARY_PATH環境變數,或者有沒有安裝opencv
第二步:在target_link_libraries中增加以來庫,例如:
target_link_libraries(xxxxxx ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
增加目標連結時的依賴庫
第三步:在所需使用的cpp檔案中增加標頭檔案,例如:
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
2.cvMat和ros image data之間的轉換
ros中已提供現成的組建cv_bridge,方便大家來使用
第一步:需要在CMakefile中,增加如下:
find_package(catkin REQUIRED nodelet roscpp sensor_msgs cv_bridge)
如果cakin_package裡面有內容,例如
catkin_package( INCLUDE_DIRS include LIBRARIES xxxxx xxxx xxxxx CATKIN_DEPENDS dynamic_reconfigure image_geometry image_transport nodelet roscpp sensor_msgs )
也需要在最後CATKIN_DEPENDS中新增cv_bridge,改成如下
catkin_package(
INCLUDE_DIRS include
LIBRARIES xxxxx xxxx xxxxx
CATKIN_DEPENDS dynamic_reconfigure image_geometry image_transport nodelet roscpp sensor_msgs cv_bridge
)
第二步:需要在package.xml中新增如下
<build_depend>cv_bridge</build_depend>
<run_depend>cv_bridge</run_depend>
第三步:需要在cpp檔案中增加標頭檔案,如下
#include <cv_bridge/cv_bridge.h>
就可以使用cv_bridge,使用方法可見連結http://wiki.ros.org/cv_bridge/Tutorials。
http://wiki.ros.org/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages