在Ubuntu18.04中安装OpenCV4.5
一、概述OpenCV是开源、高度优化的计算机视觉库,目前,在众多图像相关领域都会使用Opencv进行处理。Opencv有很多现成的图像处理函数可以帮助我们快速实现相关工程算法落地,并且效率和稳定性均有较好的保障。尤其近来,深度学习得到了大力的推广,在高版本的OpenCV中也集成了深度学习的相关功能,因此选择OpenCV作为研究或者部署的图像处理工具再适合不过。本教程面向Ubuntu20.04操作系
目录
opencv_python-4.4.0.42-cp38-cp38-manylinux2014_x86_64.whl
一、概述
OpenCV是开源、高度优化的计算机视觉库,目前,在众多图像相关领域都会使用Opencv进行处理。Opencv有很多现成的图像处理函数可以帮助我们快速实现相关工程算法落地,并且效率和稳定性均有较好的保障。尤其近来,深度学习得到了大力的推广,在高版本的OpenCV中也集成了深度学习的相关功能,因此选择OpenCV作为研究或者部署的图像处理工具再适合不过。下面是一些opencv的一些核心功能组件:
- core(核心库). Core functionality
- imgproc(图像处理). Image Processing
- imgcodecs(图像读取和保存). Image file reading and writing
- videoio(视频输入输出). Video I/O
- highgui(高级GUI界面). High-level GUI
- video(视频分析). Video Analysis
- calib3d(相机矫正和三维重建). Camera Calibration and 3D Reconstruction
- features2d(二维特征框架). 2D Features Framework
- objdetect(物体检测). Object Detection
- dnn(深度学习). Deep Neural Network module
- ml(机器学习). Machine Learning
- flann(多维空间聚类和搜索). Clustering and Search in Multi-Dimensional Spaces
- photo(摄影成像). Computational Photography
- stitching(图像配准). Images stitching
- gapi(图形api). Graph API
本教程面向Ubuntu18.04操作系统,讲解如何在Ubuntu中安装最新的opencv4.5库,并最终在Python中实现调用。
二、安装
具体有两种安装方式。第一种就是采用预先编译好的二值包进行安装,第二种就是利用源码重新编译安装。总体来说,第一种方式安装比较简单,但是不能保证安装的opencv是最新版。第二种方式安装比较繁琐,但是可以自由选择版本,尤其是最新的opencv。下面分两种方式进行讲解。
2.1 从预编译文件安装
首先更新系统:
sudo apt update
sudo apt upgrade
更新完以后最好重启以下:
sudo systemctl reboot
接下来开始安装opencv:
pip3 install opencv-python
这时候直接输入”y“键按回车即可。安装完成后可以使用python进行测试:
$ python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2 as cv
>>> print(cv.__version__)
4.2.0
此时,已经安装完成。
2.2从源码安装
首先安装git工具(提前切换阿里源或其它国内镜像源,否则下载速度会很慢):
sudo apt install git
然后从github上下载最新的opencv。可以从官网上看到最新的opencv当前版本是opencv4.4.0
开始下载:
cd ~/
git clone https://github.com/opencv/opencv.git
如图所示:
下载完opencv以后再下载opencv_contrib
git clone https://github.com/opencv/opencv_contrib.git
将opencv_contrib文件夹移动到opencv文件夹里。然后在opencv文件夹里建立build文件夹,如下图所示:
接下来打开终端。进入build文件夹,然后安装环境依赖:
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 libdc1394-22-dev
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
接下来为了安装方便不容易出错,建议使用cmake-gui安装,安装命令如下:
sudo apt-get install cmake-gui
安装完毕打开cmake-gui,命令:
cmake-gui
在Where is the source code:选择opencv目录位置,在Where to build the binaries:选择build位置如下图所示:
选择完毕点击Configure,然后会弹出编译器选项,选择Unix Makefiles即可。
配置完毕如下图所示:
由于我们采用了anaconda,python版本为3.8.4,因此我们希望最终生成的opencv是装在anaconda下面的。
找到BUILD_opencv_world,后面的方框点上勾;
找到在CMAKE_BUILD_TYPE 值处输入RELEASE,其他保持不变;
找到OPENCV_ENABLE_NONFREE,在后面的方框点上勾(有的算法有专利,不点这个不能用,比如sift);
找到OPENCV_EXTRA_MODULES_PATH,选择opencv_contrib文件夹中的modules文件夹,注意是modules文件夹(我的路径是/home/qianbin/opencv/opencv_contrib/modules)。
找到BUILD_TIFF,后面的方框点上勾;
找到BUILD_opencv_python2,后面方框点沟掉;
点击Add Entry,添加BUILD_opencv_python3。然后搜索python3,对应的项目修改如下:
完成以上工作再点击Configure,耐心等一等,如果上面还有红色的再点击Configure,之到没有红色为止。Configure完成之后点击Generate,等一等即可。
正常情况下,等Generate完成之后,我们可以直接在build目录下输入命令:
make
进行编译工作了。实际上这样很可能出错,我在编译了10分钟后报错了,出错的原因一般都是说缺少什么文件,缺少的文件主要是Cmake在配置时由于网络不好没下载下来。我在位于build下的CmakeDownloadLog.txt可以查看到有哪些文件下载失败。经常下载失败的文件我上传到了我的百度云,提取码:4zom。建议大家编译之前到build目录下的downloads/xfeatures2d文件夹里查看是否有如下11个文件:
如果没有务必拷贝到build目录下的downloads/xfeatures2d文件夹里。我在安装时还有一个文件face_landmark_model.dat没有下载成功,将该文件放到build目录下的/share/opencv4/testdata/cv/face目录下,如果没有目录可自行建立。检查拷贝完毕,最好再次Configure一下,直到没有上面没有红色为止,然后再点击Generate。如果不放心可以再次检查日志。
最后在build目录下重新输入命令:
make
上述过程需要十几分钟甚至更长(取决于机器性能),编译不出错完成之后,出现下图所示界面:
接下来在build目录下输入命令:
sudo make install
即可安装。最后所有文件将被安装到目录“/usr/local/”下面。
安装完成后,手动创建opencv.pc:
cd /usr/local/lib
sudo mkdir pkgconfig && cd pkgconfig
sudo gedit opencv.pc
然后添加:
prefix=/usr/local
exec_prefix=${prefix}
includedir=/usr/local/include
libdir=/usr/local/lib
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.4.0
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}
更改环境变量,输入命令:
sudo gedit /etc/bash.bashrc
打开之后,在文件最后面添加以下内容:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
保存退出,opencv基本上就安装完成了。通过 pkg-config 查看 opencv 版本:
pkg-config --modversion opencv
安装完成后进行python测试,如下所示:
$ python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2 as cv
>>> print(cv.__version__)
4.4.0-dev
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)