Ubuntu从源码编译安装opencv 4.7.0

Ubuntu从源码编译安装opencv 4.7.0

  • 问题发生
  • 开始
    • 安装包下载
    • 环境配置
    • 编译安装
    • 环境配置
    • 检查
    • 附录

问题发生

原始的opencv版本是使用ubuntu源中提供的库,一键式命令行安装,很方便,但最近做二维码检测时发现opencv Library QUIRC is not linked,百度查了一下,无了个大语,所以还是得手动从源码开始编译安装opencv。

开始

安装包下载

  1. Opencv安装包下载,我选择的最新版:4.7.0
  2. opencv_contrib下载(注意这里要与你上面下载的opencv版本一致)
  3. 两个都下载好以后,把opencv_contrib放到解压后opencv文件夹里面。

环境配置

sudo apt-get install build-essential 

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

下载opencv的依赖,其中第三行的依赖是可选的,前两行的依赖则是必要的。

常见问题:无法定位 libjasper-dev,根据我多次安装opencv的经验,网上提供的许多方法都是不可用的,因此我根据一篇博客的建议,舍弃jasper这个依赖包。在新版的 ubuntu 中 jasper 相关的图形出来已经被舍弃,他的功能被更强大的包替代,我记得好像是png包来着,所以删除这段依赖即可。

编译安装

编译opencv时有时需要一些opencv_contrib里的扩展包,因此在cmake阶段添加参数:-D OPENCV_EXTRA_MODULES_PATH=[path-to-opencv_contrib]/opencv_contrib-4.7.0/modules/[package_you_need],这里只需要添加自己需要的包就好了(例如wechat_qrcode,这是微信开放的基于nn的二维码识别功能),因为它们会从github里下载一堆的资源来安装,如果全都安装的话比较费时间,网络不稳定还会安装失败。

然后,直接开始

cd /path_to_opencv
mkdir build
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_QUIRC=ON  -D OPENCV_ENABLE_NONFREE=True -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=[path-to-opencv_contrib]/opencv_contrib-4.7.0/modules/[package_you_need] ..
make -j4
sudo make install

在安装 wechat_qrcode 模块时,网络下载模型文件失败,这时就需要手动下载该模块所需的四个模型文件 detect.caffemodel、detect.prototxt、sr.caffemodel、 sr.prototxt,并将它们放到路径:[path-to-opencv]/build/downloads/wechat_qrcode里,然后重新编译。

环境配置

看了一些安装opencv的博客,他们各自都有自己的环境配置过程,彼此还都有差别,没办法,我只能凭自己有限的知识,挑了些我感觉比较靠谱的:

  1. 打开文件
sudo gedit /etc/ld.so.conf
  1. 添加
/usr/loacal/lib
  1. 保存关闭,运行下面代码:
sudo ldconfig
  1. 打开.bashrc文件:
sudo gedit /etc/bash.bashrc 
  1. 添加下面两行代码,放到最后面即可,主要是方便我们在CMakeLists里使用find_package()后,可以找到头文件和库文件路径:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
  1. 保存退出,重新source一下终端
source /etc/bash.bashrc

检查

终端输入以下两行命令,显示正常则安装成功:

pkg-config --modversion opencv4 #查看版本号
pkg-config --libs opencv4 #查看libs库

附录

粘贴一下对我有帮助的三篇博客地址吧:
opencv Library QUIRC is not linked解决办法
Ubuntu下Opencv的安装(亲测有效,超级简单!)
Ubuntu18.04安装Opencv4.5(最新最详细)

你可能感兴趣的:(opencv,ubuntu,c++)