由于ROS自带的OpenCV中不支持opencv_contrib
等库,而且在系统中安装了ROS,在cmake
编译时自动就会去寻找ROS自带的opencv。即使能够cmake ..
成功,在执行make
*** 作时仍然会报错。
1.1下载
由于我的Ubuntu版本为16.04,对应的ROS版本为kinetic
,下面我给出该版本的下载链接
kinetic-cv_bridge阿里云下载链接 提取码: p06k
如果Ubuntu为其他版本,请从以下链接的分支中选取适合自己版本的cv_bridge。
GIthub链接
下载后,可以将其放置在/home/用户名/
文件夹下,当然其他的也可以,然后执行以下 *** 作
cd /home/syd/cv_bridge
1.2修改CMakeLists.txt
,只需要修改两行
#这几行是原来就有的
find_package(OpenCV 3 REQUIRED
COMPONENTS
opencv_core
opencv_imgproc
opencv_imgcodecs
CONFIG
)
#在其上方添加一行 这里是自己安装的opencv的路径
set(OpenCV_DIR "/home/syd/opencv")
#并修改第一行,这里是自己安装的opencv版本
find_package(OpenCV 3.4.10 REQUIRED
COMPONENTS
opencv_core
opencv_imgproc
opencv_imgcodecs
CONFIG
)
1.3安装
注意:还是在/home/syd/cv_bridge
目录下,顺序执行以下命令:
CMAKE_INSTALL_PREFIX=/usr/local/cv_bridge-3.4.10
这里是安装路径,可以自行修改
mkdir build && cd build && cmake -D CMAKE_INSTALL_PREFIX=/usr/local/cv_bridge-3.4.10 ..
sudo make -j8
sudo make install
很快就会安装完毕!
2、使用下面就可以使用自己安装的opencv版本了,可以在CMakeLists.txt
中添加以下内容:
#这里的路径是上一步安装的路径
set(cv_bridge_DIR /usr/local/cv_bridge-3.4.10/share/cv_bridge/cmake)
#设置opencv路径
SET(OpenCV_DIR "/home/syd/opencv")
#版本号
find_package(OpenCV 3.4.10 REQUIRED)
这样就可以顺利的进行编译了,同时也可以使用opencv_contrib
库了。
到此就结束了。。。
如果还在ROS工程有需要的话,可以添加以下内容:(有些包可能在编译的时候会报错,如果不需要的话,可以将其注释掉,比如camera_models
)
find_package(catkin REQUIRED COMPONENTS
message_generation
message_runtime
roscpp
std_msgs
geometry_msgs
nav_msgs
tf
cv_bridge #添加
#camera_models
image_transport
nodelet
message_filters
)
笔者水平有限,若有不足之处,请多多包涵 !
参考ROS工程不使用ROS自带的OpenCV
Ubuntu16.04安装ROS Kinetic详细过程
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)