原始的opencv版本是使用ubuntu源中提供的库,一键式命令行安装,很方便,但最近做二维码检测时发现opencv Library QUIRC is not linked
,百度查了一下,无了个大语,所以还是得手动从源码开始编译安装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的博客,他们各自都有自己的环境配置过程,彼此还都有差别,没办法,我只能凭自己有限的知识,挑了些我感觉比较靠谱的:
sudo gedit /etc/ld.so.conf
/usr/loacal/lib
sudo ldconfig
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
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(最新最详细)