ROS Kinetic中OpenCV使用

ROS Kinetic中OpenCV使用

本文主要记录了ROS Kinetic中OpenCV的使用,Kinetic完全安装中本身自带了Opencv3.3.1,因此在ROS中可以直接用ROS自带的Opencv3.3.1,也可以使用自己源码编译的Opencv,区别只是在头文件中包含路径以及CMakeLists.txt的target_link_libraries 里面。 下面分别记录两种:


1. ROS自带的OpenCV使用

在工程中包含头文件

#include <opencv-3.3.1/opencv2/core.hpp>
#include <opencv-3.3.1/opencv/highgui.h>
#include <opencv-3.3.1/opencv2/opencv.hpp>

然后在CMakeLists.txt中需要包含ROS自带的Opencv package,内容如下:

find_package(catkin REQUIRED COMPONENTS 
  roscpp
  OpenCV
  nav_msgs
  actionlib
  actionlib_msgs
  move_base_msgs
  sensor_msgs
)

include_directories(
  include 
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
)

target_link_libraries(your_exe_name
${catkin_LIBRARIES} 
${OpenCV_LIBRARIES}
)

2.使用自己源码编译的Opencv

在工程中包含头文件

#include <opencv2/core.hpp>
#include <opencv/highgui.h>
#include <opencv2/opencv.hpp>

在CMakeLists.txt中需要包含自己源码编译的Opencv

find_package(catkin REQUIRED COMPONENTS 
  roscpp
  OpenCV
  nav_msgs
  actionlib
  actionlib_msgs
  move_base_msgs
  sensor_msgs
)

include_directories(
  include 
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
)

target_link_libraries(your_exe_name
${catkin_LIBRARIES} 
${OpenCV_LIBS}
)

下面给出一个完整的CMakeLists.txt供大家参考:

cmake_minimum_required(VERSION 2.8.3)
project(your_project_name)

## Compile as C++11, supported in ROS Kinetic and newer
add_compile_options(-std=c++11)

## 当前节点依赖的包,这里主要是OpenCV
find_package(catkin REQUIRED COMPONENTS 
  roscpp
  OpenCV
  nav_msgs
  actionlib
  actionlib_msgs
  move_base_msgs
  sensor_msgs
)


catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES ros_node_manager
#  CATKIN_DEPENDS other_catkin_pkg
#  DEPENDS system_lib
)

## 包含的文件夹
include_directories(
  include 
  ${catkin_INCLUDE_DIRS} 
  ${OpenCV_INCLUDE_DIRS}
)

##添加你工程中所有的文件
add_executable(your_exe_name
  src/your_cpp1.cpp
  src/your_cpp2.cpp
  include/your_node_name/your_cpp1.h
  include/your_node_name/your_cpp1.h
  src/main.cpp
)
##添加依赖
add_dependencies(your_exe_name 
  ${${PROJECT_NAME}_EXPORTED_TARGETS} 
  ${catkin_EXPORTED_TARGETS})
## 链接库,这里主要是链接OpenCV_LIBS
target_link_libraries(your_exe_name
  ${catkin_LIBRARIES} 
  ${OpenCV_LIBS}
)

猜你喜欢

转载自blog.csdn.net/u010284636/article/details/80071786