博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu 16.04 + ROS Kinetic + opencv-4.2.0
阅读量:2080 次
发布时间:2019-04-29

本文共 2624 字,大约阅读时间需要 8 分钟。

Ubuntu 16.04 + ROS Kinetic + opencv4.2.0

因为工作需要,要在Ubuntu 16.04 + ROS Kinetic配置下使用高版本的opencv。但是ROS Kinetic自带的opencv版本只有3.3.1,因此需要自行安装高版本的opencv,然后进行相关配置。

配置过程比较艰难,搞了半天,因此记录一下这个过程。

该过程主要分为以下3个步骤:

  1. 下载安装opencv-4.2.0以及opencv_contrib-4.2.0(后者根据需要选择是否安装,因为我需要使用opencv内置的跟踪器,因此需要安装这个包。另外,这两个包的版本必须一致);
  2. 配置cv_bridge文件,让它调用新安装的opencv版本,而不是ROS自带的版本;
  3. 配置自己创建的ROS功能包的CMakeLists.txt,然后用catkin_make编译即可。

1.安装opencv4.2.0

该过程我主要参考了以下两篇文章:

安装流程与以上两篇文章一致,遇到的问题也是一样的,就是在使用cmake配置时因为网络问题无法正常下载需要的文件。解决方法是直接将需要的文件下载到本地即可,至于需要下载哪些文件以及下载地址,可以查看/opencv-4.2.0/build/CMakeDownloadLog.txt,查找关键字"missing"中出现的文件即可。我统计了一下,总共缺少以下文件:

  • [opencv-4.2.0]
    ippicv_2019_lnx_intel64_general_20180723.tgz
  • [opencv_contrib-4.2.0]
    在这里插入图片描述
    在这里插入图片描述

将下载的文件放在指定文件夹内即可,然后使用cmake重新配置就好了。这部分文件我分享了百度网盘,有需要的可以自行下载。

链接:https://pan.baidu.com/s/14LPvzrJjIDw4z6wfdXR-Gg

提取码:hjm9

2.配置cv_bridge文件

这部分内容主要参考:

第二篇博客过于复杂了,其实只要像第一篇博客一样修改很少的部分就可以了。

/opt/ros/kinetic/share/cv_bridge/cmake路径下找到cv_bridgeConfig.cmake文件,需要修改第94-96行的内容。修改如下:

# if(NOT "include;/opt/ros/kinetic/include/opencv-3.3.1-dev;/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv " STREQUAL " ")#   set(cv_bridge_INCLUDE_DIRS "")#   set(_include_dirs "include;/opt/ros/kinetic/include/opencv-3.3.1-dev;/opt/ros/kinetic/include/opencv-3.3.1-dev/opencv")if(NOT "include;/usr/local/include/opencv4;/usr/local/include/opencv4/opencv2 " STREQUAL " ")  set(cv_bridge_INCLUDE_DIRS "")  set(_include_dirs "include;/usr/local/include/opencv4;/usr/local/include/opencv4/opencv2")

3.配置功能包下的CMakeLists.txt

这部分内容参考以下博客的最后一部分:

修改后的CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.0.2)project(robot_tracker_ros)## Compile as C++11, supported in ROS Kinetic and neweradd_compile_options(-std=c++11)## Find catkin macros and libraries## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)## is used, also find other catkin packagesset(OpenCV_DIR /usr/local/include/opencv4)find_package(catkin REQUIRED COMPONENTS  cv_bridge  image_transport  roscpp  rospy  sensor_msgs  std_msgs)find_package(OpenCV 4 REQUIRED)message(STATUS "   OpenCV library status:")message(STATUS "    config: ${OpenCV_DIR}")message(STATUS "    version: ${OpenCV_VERSION}")message(STATUS "    libraries: ${OpenCV_LIBS}")message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")...############# Build ############### Specify additional locations of header files## Your package locations should be listed before other locationsinclude_directories(# include  ${
catkin_INCLUDE_DIRS} ${
OpenCV_INCLUDE_DIRS})...add_executable(getImage src/getImage.cpp)target_link_libraries(getImage ${
catkin_LIBRARIES} ${
OpenCV_LIBS})...

以上就是全部内容了,这个过程真的太痛苦了。。。希望能帮到一些人吧。

转载地址:http://vsuqf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
word2vec 模型思想和代码实现
查看>>
怎样做情感分析
查看>>
用深度神经网络处理NER命名实体识别问题
查看>>
用 RNN 训练语言模型生成文本
查看>>
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
决策树的python实现
查看>>
了解 Sklearn 的数据集
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>