如何使用ROS自带OpenCV进行编译

系统:Ubuntu16.04

ROS:Kinetic

一般来说,安装ROS的过程中会自动安装OpenCV库,如果通过sudo apt-get install libopencv-dev安装opencv的话,就会存在两个版本的opencv,且两个OpenCV安装的路径也不同,在编译程序过程中,有时找不到某个版本的opencv,有时又需要依赖特定版本的opencv,故在这里记录使用特定版本opencv编译代码的方法。

1.CMakeLists.txt情况下

CMakeLists.txt中常通过find_package命令来寻找opencv,如果想指定某个版本的opencv,需要找到对应的OpenCVConfig.cmake文件,事实上这个做法也适用于找所有特定版本的库,对于ROS自带的OpenCV,可以通过添加如下代码索引

set(OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev/)

 2.Makefile情况下

有些时候cmake版本太低编译不了某些库,只能用makefile编译,这时候makefile通常会通过pkg-config这个工具来在电脑里搜寻,ROS自带的OpenCV无法被找到,原因是pkg-config这个工具会搜寻一些路径下的.pc文件来定位库的位置,对于opencv来说,这个文件就是opencv.pc。如果你是用apt-get安装的opencv,应该可以直接被pkg-config找到,而如果你想用ROS自带的opencv,就得自己添加这个文件。

通过如下几条指令新建一个opencv.pc(主要是要在usr/local/lib这个文件夹下,pkgconfig文件夹建立随意):

cd /usr/local/lib/
mkdir pkgconfig
cd pkgconfig
sudo touch opencv.pc
sudo gedit opencv.pc

在这个文档里键入以下内容:

# Package Information for pkg-config

prefix=/opt/ros/kinetic
exec_prefix=${prefix}
libdir=${exec_prefix}/lib/x86_64-linux-gnu
includedir_old=${prefix}/include/opencv-3.3.1-dev/opencv
includedir_new=${prefix}/include/opencv-3.3.1-dev

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.3.1
Libs: -L${exec_prefix}/lib/x86_64-linux-gnu -lopencv_stitching3 -lopencv_superres3 -lopencv_videostab3 -lopencv_aruco3 -lopencv_bgsegm3 -lopencv_bioinspired3 -lopencv_ccalib3 -lopencv_cvv3 -lopencv_dpm3 -lopencv_face3 -lopencv_photo3 -lopencv_fuzzy3 -lopencv_hdf3 -lopencv_img_hash3 -lopencv_line_descriptor3 -lopencv_optflow3 -lopencv_reg3 -lopencv_rgbd3 -lopencv_saliency3 -lopencv_stereo3 -lopencv_structured_light3 -lopencv_viz3 -lopencv_phase_unwrapping3 -lopencv_surface_matching3 -lopencv_tracking3 -lopencv_datasets3 -lopencv_text3 -lopencv_dnn3 -lopencv_plot3 -lopencv_xfeatures2d3 -lopencv_shape3 -lopencv_video3 -lopencv_ml3 -lopencv_ximgproc3 -lopencv_calib3d3 -lopencv_features2d3 -lopencv_highgui3 -lopencv_videoio3 -lopencv_flann3 -lopencv_xobjdetect3 -lopencv_imgcodecs3 -lopencv_objdetect3 -lopencv_xphoto3 -lopencv_imgproc3 -lopencv_core3
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}

 保存即可

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值