关于opencv的相关问题总结


最近被opencv折磨惨了,有的程序包需要opencv3,有的依赖于opencv4,还有环境的一些问题,记录一下,填一填坑

1.ubuntu18.04下多版本安装以及共存问题

1)最开始在ubuntu下通过命令行装了默认的opencv3.2.0

sudo apt-get install libopencv-dev python-opencv

2)在已有opencv3的基础上安装编译opencv4.4.0 + opencv_contrib-4.4.0 并配置环境

自从进入3.X时代以后,OpenCV将代码库分成了两部分,分别是稳定的核心功能库和试验性质的contrib库。(下载时,二者的版本需要一一对应

opencv网址:https://opencv.org/releases/
opencv_contrib : https://github.com/opencv/opencv_contrib/releases

下载完成后,将两个都解压到主目录,并且将opencv_contrib-4.4.0 放到opencv4.4.0目录下。按照下列步骤完成编译。

cd opencv-4.4.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=YES -D OPENCV_EXTRA_MODULES_PATH=/home/yourname/opencv-4.4.0/opencv_contrib-4.4.0/modules/ ..
make      #如果多线程make的话可能会报错
sudo make install

如果要用到cuda加速则需要DNN模块,编译的命令换成如下:

cmake -D CMAKE_BUILD_TYPE=RELEASE       -D CMAKE_INSTALL_PREFIX=/usr/local       -D CUDA_ARCH_BIN='7.5'      -D WITH_CUDA=ON    -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON     -D INSTALL_C_EXAMPLES=ON       -D OPENCV_EXTRA_MODULES_PATH=/home/zqh/software/opencv-4.4.0/opencv_contrib-4.4.0/modules  -D BUILD_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=yes  ..

环境配置

首先配置链接库路劲

sudo gedit /etc/ld.so.conf.d/opencv4.conf
#输入 
/usr/local/lib

前面的cmake… 那一行命令默认的路径在/usr/local 下面
保存后:

sudo ldconfig

然后配置bashrc:

sudo gedit /etc/bash.bashrc 
#添加如下内容:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH

保存后:

source /etc/bash.bashrc
sudo updatedb

3)验证下是否配置成功

pkg-config --modversion opencv4

在这里插入图片描述
4)在整个过程中踩了不少坑,将opencv3卸载掉了,于是我又在opencv-4的基础上安装编译了opencv3.4.0 (在调用darknet时,opencv的版本不能高于3.4.0,不然会报错,报错内容下面具体讲)

具体安装编译参考:https://blog.csdn.net/learning_tortosie/article/details/80594399

2.ROS下编译与opencv相关的错误及解决办法

1)error "OpenCV 4.x+ requires enabled C++11 support"

这个错误产生的原因是我将opencv3.2.0删掉了,但是darknet仅支持opencv3.4.0以下版本,后来重新安装编译opencv3.4.0后顺利解决;

2)在这里插入图片描述
解决办法:
主要是CmakeLists.txt文件要配置好opencv动态链接库

set(OpenCV_DIR "~/opencv-3.4.0/build")   
find_package(OpenCV 3.4.0  REQUIRED)

target_link_libraries(calibration_publisher
  ${catkin_LIBRARIES} ${OpenCV_LIBS}

在这里插入图片描述

参考链接:https://blog.csdn.net/u012816621/article/details/51732932

3.cv_bridge 与opencv4.4.0冲突问题解决

ros-melodic cv_bridge默认配置的是opencv3,所以需要改cv_bridge的配置文件
1)运行命令,更改cv_bridgeConfig.cmake如下

cd /opt/ros/melodic/share/cv_bridge/cmake/
sudo gedit cv_bridgeConfig.cmake
#if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
  #set(cv_bridge_INCLUDE_DIRS "")
  #set(_include_dirs "include;/usr/include;/usr/include/opencv")

if(NOT "include;/usr/local/include/opencv4 " STREQUAL " ")
  set(cv_bridge_INCLUDE_DIRS "")
  set(_include_dirs "include;/usr/local/include/opencv4;/usr/local/include;/usr/include")


#set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0")
set(libraries "cv_bridge;/usr/local/lib/libopencv_core.so.4.4.0;/usr/local/lib/libopencv_imgproc.so.4.4.0;/usr/local/lib/libopencv_imgcodecs.so.4.4.0;/usr/local/lib/libopencv_calib3d.so.4.4.0;/usr/local/lib/libopencv_highgui.so.4.4.0;/usr/local/lib/libopencv_dnn.so.4.4.0")

2)更改cv_bridgeConfig.cmake

sudo gedit cv_bridgeConfig.cmake
#set(OpenCV_VERSION 3.2.0)
#set(OpenCV_VERSION_MAJOR 3)
#set(OpenCV_VERSION_MINOR 2)
#set(OpenCV_VERSION_PATCH 0)
#set(OpenCV_SHARED ON)
#set(OpenCV_CONFIG_PATH /usr/share/OpenCV)
#set(OpenCV_INSTALL_PATH /usr)
#set(OpenCV_LIB_COMPONENTS opencv_calib3d;opencv_core;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_viz;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_datasets;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_hdf;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_reg;opencv_rgbd;opencv_saliency;opencv_stereo;opencv_structured_light;opencv_surface_matching;opencv_text;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto)
#set(OpenCV_USE_MANGLED_PATHS FALSE)
#set(OpenCV_MODULES_SUFFIX )


set(OpenCV_VERSION 4.4.0)
set(OpenCV_VERSION_MAJOR 4)
set(OpenCV_VERSION_MINOR 3)
set(OpenCV_VERSION_PATCH 13)
set(OpenCV_SHARED ON)
set(OpenCV_CONFIG_PATH /usr/local/share/opencv4)
set(OpenCV_INSTALL_PATH /usr/local/)
set(OpenCV_LIB_COMPONENTS opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab;opencv_viz;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_cvv;opencv_datasets;opencv_dpm;opencv_face;opencv_fuzzy;opencv_hdf;opencv_img_hash;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_reg;opencv_rgbd;opencv_saliency;opencv_stereo;opencv_structured_light;opencv_surface_matching;opencv_text;opencv_tracking;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto)
set(OpenCV_USE_MANGLED_PATHS TRUE)
set(OpenCV_MODULES_SUFFIX )
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值