OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录

  • 1.下载源码和安装依赖包
  • 2.解压源码文件和配置路径
  • 3.配置Cmake并编译OpenCV
  • 4.导入OpenCV到环境变量
  • 5.使用编译好的库
  • 6.在Qt工程下使用OpenCV

1.下载源码和安装依赖包

OpenCV4.2.0contrib源码下载链接如下:

  • OpenCV源码下载: https://codeload.github.com/opencv/opencv/tar.gz/4.2.0
  • contrib模块源码下载: https://codeload.github.com/opencv/opencv_contrib/tar.gz/4.2.0

首先在终端中输入如下命令来安装依赖包:

sudo apt  install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
sudo apt  install build-essential qt5-default ccache libv4l-dev libavresample-dev  libgphoto2-dev libopenblas-base libopenblas-dev doxygen  openjdk-8-jdk pylint libvtk6-dev
  • Tips: 在之前几次编译OpenCV的过程中我发现安装上面的依赖包的时候基本都会出现一些问题,这次我的Ubuntu软件源用的是南邮源,输入上面的命令安装包时居然一点问题没有报,因此如果出现问题的时候,可以尝试将你的Ubuntu软件源切换到NJUPT试试。

2.解压源码文件和配置路径

使用如下命令解压源码文件:

tar -zxvf opencv-4.2.0.tar.gz.gz
tar -zxvf opencv_contrib-4.2.0.tar.gz.gz

将解压后的opencv_contrib-4.2.0复制到opencv-4.2.0目录下,并且在opencv-4.2.0目录下新建build目录并进入:

cp opencv_contrib-4.2.0 -rf opencv-4.2.0
cd opencv-4.2.0/ && mkdir build
cd build

最终opencv-4.2.0目录内如下:

3.配置Cmake并编译OpenCV

build目录内执行以下命令(注意contrib路径换成自己的):

cmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.2.0/modules \-D OPENCV_GENERATE_PKGCONFIG=YES \   ..

其中CMAKE_INSTALL_PREFIX指定了编译好的库的目录,也就是说编译完成的OpenCV库文件会在该目录下,OPENCV_GENERATE_PKGCONFIG指定了生成pkgconfig配置文件,这个文件在后续创建OpenCV工程的时会很有用。

完成后结果如下:

-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/peco/Documents/opencv-4.2.0/build

这个时候在执行:

sudo make -j4

就开始编译了,编译时间较长,但是会有进度提示,所以等着就好了。

如果报错:

fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory#include "features2d/test/test_detectors_regression.impl.hpp"

只需在该文件中将

 #include "features2d/test/test_detectors_regression.impl.hpp"

改成:

#include "../../../../modules/features2d/test/test_detectors_invariance.impl.hpp

其他头文件缺失解决方法与此类似,其实上面的features2d目录就在opencv-4.2.0/modules/目录下,重新指定一下就行,编译完成输出如下:

[100%] Built target opencv_python2
[100%] Building CXX object modules/optflow/CMakeFiles/opencv_perf_optflow.dir/perf/perf_rlof.cpp.o
[100%] Building CXX object modules/optflow/CMakeFiles/opencv_perf_optflow.dir/perf/perf_tvl1optflow.cpp.o
[100%] Linking CXX executable ../../bin/opencv_test_xfeatures2d
[100%] Built target opencv_test_xfeatures2d
[100%] Building CXX object modules/superres/CMakeFiles/opencv_perf_superres.dir/perf/perf_superres.cpp.o
[100%] Linking CXX executable ../../bin/opencv_perf_optflow
[100%] Built target opencv_perf_optflow
[100%] Linking CXX executable ../../bin/opencv_perf_superres
[100%] Built target opencv_perf_superres

安装编译好的库:

sudo make install

4.导入OpenCV到环境变量

还记得之前的-D OPENCV_GENERATE_PKGCONFIG=YES \吗,该选项可以帮助我们导出库的信息方便引用,该过程主要有两步:

sudo vim /etc/ld.so.conf

首先编辑ld.so.conf文件,在末尾加上:

include /usr/loacal/lib

然后终端执行命令:

sudo ldconfig

然后修改.bashrc文件:

sudo vim ~/.bashrc

输入:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

最后source一下,让更改立即生效:

source ~/.bashrc

5.使用编译好的库

输入如下命令:

pkg-config --cflags --libs opencv4
-I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4
-L/usr/local/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

该输出可以作为g++等编译器指定头文件,库文件等目录参数。

写一个简单的测试代码test_opencv.cpp

#include<iostream>
#include<opencv2/opencv.hpp>using namespace std;
using namespace cv;int main(int argc,char**argv)
{Mat input = imread("test.jpg");imshow("input",input);waitKey(0);return 0;
}

使用如下命令编译该文件:

g++ test_opencv.cpp -I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

编译命令比较长比较冗余,但是此处仅仅是为了测试,一般也没有谁会这么来编译C++代码。编译过程没有问题,生成a.out可执行文件,运行该文件显示出该目录下名为test.jpg的图片,说明至此整个编译安装完成。

6.在Qt工程下使用OpenCV

要问Ubuntu下好用的C++ IDE有哪些,Qt是我最推荐的,因为整个QtUbuntu下也就一个多G,相比WindowsVS 动辄十几二十个G,Qt使用起来真的很清爽,而且Qt也可以创建纯C和纯C++项目,因此非常推荐。

Qt中使用OpenCV,其实只要配置.pro文件就可以了,只需要在.pro文件中添加上库的路径就可以:

## opencv lib
INCLUDEPATH+=/usr/local/include/opencv4/ \/usr/local/include/ \/usr/local/include/opencv4/opencv2LIBS+=/usr/locao/lib/*.so.*

OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录相关推荐

  1. Ubuntu18.04安装OpenCV4.3.0和环境配置(支持编译CUDA并安装配置python-opencv)

    Ubuntu18.04安装OpenCV4.3.0和环境配置 下载源文件 安装依赖 编译安装 环境配置 动态库配置 配置OpenCV的`PKG-CONFIG`环境 Python-OpenCV环境[如果安 ...

  2. 深度学习环境配置 (Ubuntu18.04 + CUDA10.0 + cuDNN7.6.5 + TensorFlow2.0)

    @ Bergen, Norway 第一次安装 CUDA 的过程简直抓狂,中间出现了很多次莫名其妙的 bug,踩了很多坑.比如装好了 CUDA 重启后进不去桌面系统了,直接黑屏.比如鼠标键盘都不 wor ...

  3. ubuntu18.04安装opencv4.3.0

    根据官网指导:https://docs.opencv.org/4.3.0/d7/d9f/tutorial_linux_install.html 依赖安装: $ sudo apt-get install ...

  4. ubuntu16.04安装opencv4.3.0

    参考: https://blog.csdn.net/thorking01/article/details/95060051 https://blog.csdn.net/cocoaqin/article ...

  5. ubuntu16.04 编译opencv4和opencv_contrib

    ubuntu16.04 编译opencv4和opencv_contrib 下载源码 安装最新的cmake 使用cmake-gui配置cmake文件 make && install 添加 ...

  6. 四、SLAM学习笔记—— Ubuntu18.04交叉编译OpenCV4.5.5至ARM64位平台firefly-RK3566

    概述: 交叉编译大概的意思是指: 在PC(x86_x64)的机器上编译其他平台如ARM平台的代码,这个过程叫做交叉编译.对于交叉编译,我们首先确定目标平台的架构,RK3566的架构是ARMv8,64位 ...

  7. Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

    Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...

  8. android 源码编译core dumped,Ubuntu18.04 编译Android 8.1 源码出现的问题及解决笔记

    Ubuntu18.04 编译Android 8.1 源码出现的问题及解决笔记 经过不断的尝试并经过一晚上的编译终于在ubuntu18.04的虚拟机内编译成功Android 8.1,下面我列举以下在编译 ...

  9. 机器视觉系列3:VS2019 OpenCV环境配置

    系列文章目录 第一章:Visual Studio 2019 动态链接库DLL建立 第二章:VS动态链接库DLL调试 第三章:VS2019 OpenCV环境配置 目录 系列文章目录 前言 一.OpenC ...

最新文章

  1. 网络安全、Web安全、渗透测试之笔经面经总结(二)
  2. scala:异常处理(try/catch)
  3. python 追加到字典_扫描器篇(三)之python编写基于字典的网站目录探测脚本
  4. 智能实验室-全能优化(Guardio) 4.0.0.670 beta 8
  5. 2019-02-23-算法-进化
  6. 视觉SLAM笔记(28) Ceres
  7. 新一代企业级大数据应用方案
  8. 夯实Java基础(二十一)——Java反射机制
  9. python财务预算分析_从审计转到财务分析是怎样一种体验?
  10. API调用,1688商品页面APP端原数据获取(页面信息采集API)
  11. 富文本Ueditor
  12. matlab有限差分一维导热,一维导热方程-有限差分法-matlab实现(汇编)
  13. Myeclipse中编辑Jsp时解决光标乱跑的方法
  14. 【古代文学论文】酒文化传播中唐代文学的作用分析(节选)
  15. Unity关于程序集(Assembly )的那些事
  16. 计算机在语文教学中,计算机技术在语文教学中的运用
  17. trello01:后端的搭建
  18. 学习Linux有哪些工作方向?
  19. Tensorflow之pb文件分析
  20. 2021年--中国工商银行软件开发中心--社会招聘(春季)

热门文章

  1. win10 笔记本 突然连不上手机热点了
  2. Tiny Video Networks翻译
  3. 超越自我,明白混清醒
  4. 燃气爆炸竟然是这个四个原因?
  5. C:\windows\system32文件
  6. UGUI射线检测或触碰检测
  7. 数据模型:概念数据模型,逻辑数据模型,物理数据模型
  8. 牛顿-莱布尼茨公式的运用
  9. Scratch的克隆体
  10. 第六章:TestOps的先决条件与TiP的类型