https://blog.csdn.net/sunyoop/article/details/78630024
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里面有内容,例如
[html] view plain copy
- <code class="language-html">catkin_package(
- INCLUDE_DIRS include
- LIBRARIES xxxxx xxxx xxxxx
- CATKIN_DEPENDS dynamic_reconfigure image_geometry image_transport nodelet roscpp sensor_msgs
- )</code>
也需要在最后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