【OpenCV】多版本那是interesting

这篇具有很好参考价值的文章主要介绍了【OpenCV】多版本那是interesting。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OpenCV在使用时的问题

摘要

如果多版本安装OpenCV,切勿默认安装,务必每安装一个版本都新建一个目录,这样就会少很多问题。但是安装ROS会不知不觉的将自带的OpenCV安装到默认路径。一样会导致冲突。这时候最好的解决办法还没找到,所以最好的办法就是用ROS自带的OpenCV,虽然有警告,但是可以用呀!

背景

  1. 安装Ubuntu20.04对应的ROS,顺带安装个OpenCV4.2.0安装到默认路径(相当讨厌,也有优势);
  2. 安装了OpenCV4.8.0 到指定目录,用于ORB-SLAM3,顺利使用没有啥问题,未见冲突;
  3. 配置OpenCV3.2.0和VINS-fusion,编译通过,但是显示有警告。最可怕的是运行失败(直接段错误)可以使用gdb调试查看原因,原因是,在链接库文件时它偷偷摸摸链接到OpenCV4.2.0。让人担心的警告直接发生了。可供参考
  4. 解决方法,就是修改找opencv直接链接到ROS自带的4.2.0,编译VINS-fusion通过,但是显示有警告。可是它真的没有偷偷摸摸链接到其他库。勉强可用!!!

关于第3条,警告信息如下,这几个可能conflict

 	/usr/local/opencv3.2.0/lib/libopencv_core.so.3.2
    /usr/local/opencv3.2.0/lib/libopencv_imgcodecs.so.3.2
    /usr/local/opencv3.2.0/lib/libopencv_calib3d.so.3.2
    /usr/lib/x86_64-linux-gnu/libopencv_core.so.4.2
    /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.4.2
    # /usr/local/opencv3.2.0/lib/libboost_filesystem.so.1.71.0
    /usr/local/opencv3.2.0/lib/libopencv_features2d.so.3.2

关于第4条,警告信息如下:

...
[ 97%] Linking CXX executable /home/pf/VINSfusionFix/devel/lib/vins/kitti_gps_test
[ 98%] Linking CXX executable /home/pf/VINSfusionFix/devel/lib/vins/kitti_odom_test
/usr/bin/ld: warning: libopencv_calib3d.so.4.2, needed by /home/pf/VINSfusionFix/devel/lib/libvins_lib.so, may conflict with libopencv_calib3d.so.3.2
/usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /home/pf/VINSfusionFix/devel/lib/libvins_lib.so, may conflict with libopencv_imgcodecs.so.4.2
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /usr/local/opencv3.2.0/lib/libopencv_calib3d.so.3.2, may conflict with libopencv_core.so.4.2
/usr/bin/ld: warning: libopencv_calib3d.so.4.2, needed by /home/pf/VINSfusionFix/devel/lib/libvins_lib.so, may conflict with libopencv_calib3d.so.3.2
/usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /home/pf/VINSfusionFix/devel/lib/libvins_lib.so, may conflict with libopencv_imgcodecs.so.4.2
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /usr/local/opencv3.2.0/lib/libopencv_calib3d.so.3.2, may conflict with libopencv_core.so.4.2
[ 98%] Built target kitti_gps_test
[ 98%] Built target kitti_odom_test
[100%] Linking CXX executable /home/pf/VINSfusionFix/devel/lib/vins/vins_node
/usr/bin/ld: warning: libopencv_calib3d.so.4.2, needed by /home/pf/VINSfusionFix/devel/lib/libvins_lib.so, may conflict with libopencv_calib3d.so.3.2
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /usr/local/opencv3.2.0/lib/libopencv_calib3d.so.3.2, may conflict with libopencv_core.so.4.2
[100%] Built target vins_node

重点解释说明第4条

解决方法,就是修改找opencv直接链接到ROS自带的4.2.0,编译VINS-fusion通过,但是显示有警告。可是它真的没有偷偷摸摸链接到其他库。勉强可用!!!

修改一些报错

ROS noetic版本中的OpenCV4.2和VINS-fusion中需要使用的OpenCV3冲突,修改以兼容OpenCV4。幸运的是发现不用修改代码中不兼容的变量,可以直接添加缺失的头文件即可:

如下

  • 在camera_models包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
  • 在camera_models包中的头文件CameraCalibration.h、pose_graph包中的头文件pose_graph.h和keyframe.h、BRIEF.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>
  • 若vins_estiamtor包中报错,将头文件替换为
// #include <opencv/cv.h>
// #include <opencv/highgui.h>
#include <opencv2/highgui.hpp>
#include <opencv2/cvconfig.h>

找OpenCV

重点是找默认的opencv ,文章来源地址https://www.toymoban.com/news/detail-698413.html

  • 你以为直接确定版本可以找到ROS对应的4.2.0,可是它找不到
find_package(OpenCV 4.2 REQUIRED)
message(WARNING "OpenCV_VERSION: ${OpenCV_VERSION}")

#输出:
#CMake Warning at CMakeLists.txt:21 (message):
#OpenCV_VERSION: 4.8.0
  • 你以为不加版本直接找可以找到ROS对应的4.2.0,可是它也找不到,不仅找不到,它找上一次有版本的opencv(自己体会这句话)
find_package(OpenCV REQUIRED)
message(WARNING "OpenCV_VERSION: ${OpenCV_VERSION}")

#输出:
#CMake Warning at CMakeLists.txt:21 (message):
#OpenCV_VERSION: 4.8.0
  • 正确的方法 去找ROS对应的4.2.0对应的文件OpenCVConfig.cmake 然后找到路径,这就可以了。
  • cmake编译原理是需要CMakeLists.txt找到 .cmake 文件,就在那几个目录下面,
    1. /usr/share/OpenCV/
    2. /usr/lib/x86_64-linux-gnu/cmake/opencv4/
set(OpenCV_DIR /usr/lib/x86_64-linux-gnu/cmake/opencv4/)
find_package(OpenCV REQUIRED)
# -- Found OpenCV: /usr (found version "4.2.0")
# OPENCV VERSION: 4.2.0
find_package(catkin REQUIRED COMPONENTS
	OpenCV
	)
pf@pf-NUC12WSKi7:~/VINSfusionFix$ catkin_make
Base path: /home/pf/VINSfusionFix
Source space: /home/pf/VINSfusionFix/src
Build space: /home/pf/VINSfusionFix/build
Devel space: /home/pf/VINSfusionFix/devel
Install space: /home/pf/VINSfusionFix/install
####
#### Running command: "make cmake_check_build_system" in "/home/pf/VINSfusionFix/build"
####
####
#### Running command: "make -j16 -l16" in "/home/pf/VINSfusionFix/build"
####
[  5%] Built target libGeographiccc
[ 24%] Built target camera_models
[ 45%] Built target Calibrations
[ 49%] Built target global_fusion_node
[ 68%] Built target loop_fusion_node
[ 91%] Built target vins_lib
[ 97%] Built target kitti_gps_test
[ 97%] Built target kitti_odom_test
[100%] Built target vins_node

到了这里,关于【OpenCV】多版本那是interesting的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python版本与Opencv版本匹配】

    #. 在安装opencv时,经常遇到,python版本与opencv版本无法匹配。 当安装了opencv以后, 发现依赖项numpy又无法匹配。  #. 本章节首先记录python and opencv match. 根据上面的图片, 可知道opencv python-3.3.1.11-cp34, python3.4对应opencv3.3.1.11  pip install

    2024年04月27日
    浏览(43)
  • Python版本与opencv版本的对应关系

    python版本要和opencv版本相对应,否则安装的时候会报错。 可以到Links for opencv-python上面查看python版本和opencv版本的对应关系,如图,红框内是python版本,绿框内是opencv版本。 查看自己的python版本后,使用下面命令进行opencv安装: 安装 opencv-contrib-python,相当于加了一些额外拓

    2024年02月03日
    浏览(35)
  • OpenCV各版本差异

    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了大量的计算机视觉、图像处理和数值通用算法。这个库可以在Windows、Linux、Mac OS和Android等操作系统上运行,支持C++、Python和Java等编程语言。OpenCV自从2000年首次发布以来,已经有多个版本,每个版本都

    2024年02月11日
    浏览(34)
  • 【opencv】多版本安装

    按照如下步骤安装的OpenCV,在CMakeLists.txt文件中,直接指定opencv的版本就可以找到相应版本的OpenCV,为了验证可以在CMakeLists.txt文件中使用如下指令输出版本验证: 在/usr/local/下新建opencv版本的路径,比如这里安装opencv-3.2.0 把下载的opencv-3.2.0.zip文件夹, 建议安装的时候一并把

    2024年02月07日
    浏览(32)
  • opencv 指定版本的安装

    创建并激活虚拟环境 安装指定的 opencv 版本 可以到清华镜像源opencv库查看 opencv 和 python 的对应关系(注意:当安装老版本的时候需要查看一下对应的 python 版本)。如下图所示,可以看出 opencv-python==3.4.1.15 所对应的 python 版本可以为 2.7 , 3.4 , 3.5 , 3.6 几个版本。 若是 opencv 与

    2024年02月11日
    浏览(34)
  • 多版本opencv共存 删除原系统opencv,安装opencv4.4.0 /3.4.10 / 2.4.13.5

    本文用于记录opencv共存设置过程以及踩过的坑 似乎没完全删除 使用 find /usr iname opencv find /usr iname opencv4 find /usr iname opencv3.4 (之前安过3.4) find /usr iname opencv2 找到所有相关文件夹删除。 下面这条命令似乎可以把所有依赖都一起检测出来,并可以逐项悬着是否删除(由于对

    2024年01月18日
    浏览(55)
  • OpenCV检测圆(Python版本)

    图1:检测到的圆(粉色表示) 如果你没有得到预期的结果,你可以尝试调整一些参数来优化圆的检测。以下是一些常用的参数和调整方法: param1 和 param2 :这两个参数是Canny边缘检测的阈值。增加 param1 可以减少检测到的圆的数量,增加 param2 可以过滤掉较弱的圆。你可以尝

    2024年02月06日
    浏览(38)
  • ubuntu查看opencv的版本

    ctrl+alt+t 呼出终端,输入下面命令,查看版本: 没有安装OpenCV的同学:Ubuntu20.04安装OpenCV3.4.5(两种方法图文详解) 在难以忍受的情况下克制自己,上天必定会降给他们丰厚的福泽。

    2024年02月16日
    浏览(36)
  • Pycharm项目中更改python版本以及opencv版本

    原来我使用的项目版本是anaconda下安装了python3.9和opencv4.6 最近在项目中需要用到openc3.4.2.16的版本,同时为了适配这个opencv的版本需要将python解释器的版本降低到3.7. 首先更改python的版本 这一步比较简单,在项目中文件--设置找到python解释器,然后选择左上角+号,在conda环境中

    2024年01月24日
    浏览(43)
  • ubuntu 编译安装支持CUDA的OpenCV+其他opencv细节(需要特定版本gcc)

    在安装完“ linux CUDAtoolkit+cudnn+tensorrt 的安装”之后进行支持cuda的opencv安装 否则报错:CMake Error at modules/dnn/CMakeLists.txt:41 (message): DNN: CUDA backend requires CUDA Toolkit. Please resolve dependency or disable OPENCV_DNN_CUDA=OFF - $ nvcc -v ----- Command \\\'nvcc\\\' not found, but can be installed with: sudo apt install nvid

    2024年02月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包