opencv基于unbuntu的源码编译安装方法详解
背景
我使用的是cmake编译,编辑器用的是轻量级的vscode,平台是在ubuntu18.04。当然我在为windows下也进行学习,不过因为毕业设计是基于linux平台的开发,所以我下来这个opencv系列的记录会比较着重讲解linux系统下的开发,不过opencv是跨平台的,各个平台只是编译方法略有差别,代码和思维都是一样的。
安装
大家英语好的话可以直接参考官网安装指南 opencv官网linux的c++版opencv安装指南
1. 下载源码
- 第一步;官网下载opencv的源码
这里需要说明下:
点击github会去opencv的github主页,在哪里不仅可以下载opencv的各个版本,各个平台的发行版,还可以下载opencv目前还没有纳入主版本的增强库
这里需要说明下就是我们国区访问github和opencv官网因为制度的原因都是非常慢的,如果遇到kb级别的下载速度别着急
- 科学xx解决
- 等待(比较漫长,中途还会失败需要手动重新开始)
- 下载别上下载好上传到百度云盘的包(上网搜索自己需要的版本)
2.安装依赖项
[必要包]
GCC 4.4.x or later
CMake 2.8.7 or higher
Git
GTK+2.x or higher, including headers (libgtk2.0-dev)
pkg-config
Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
[可选包] libtbb2 libtbb-dev
[可选包] libdc1394 2.x
[可选包] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
[可选包] CUDA Toolkit 6.5 or higher
命令行跑下面代码即可:
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
3. 编译
- 首先解压后的安装包后,进入安装包,然后执行下面命令
我们在源码下新建一个build文件夹,然后在这个文件夹里面编译源码,这样编译过程中的中间文件就会生成在这个目录下,方便我们管理,项目结构更加清洁!
cd ~/opencv
mkdir build
cd build
- 然后执行一下命令来进行开始构建项目
这一步会耗费很长的时间,中间需要下载一个CPU还是GPU的加速包源,可能会卡住,有科学上网加持会快很对,如果没有卡住就让他多等一会,或者我们也可也单独下载离线包,然后修改文件,这个可以在网上单独搜索以下,这里就不贴出来了
cmake -D CMAKE_BUILD_TYPE=Release
-D CMAKE_INSTALL_PREFIX=/usr/local
..
参数解释
# 编译成发行版还是调试版,一般选择Release即可
CMAKE_BUILD_TYPE=Release\Debug
# 最后安装在/usr/local目录下
-D CMAKE_INSTALL_PREFIX=/usr/local ..
# 增强包的路径,如果有就填写,没有可以不写
-D OPENCV_EXTRA_MODULES_PATH=/home/cds/Downloads/opencv41/opencv_contrib-4.1.2/modules
4. 安装
这个j后面的数字,说的是并发执行的线程数,看自己电脑是几核几线程,不知道就填4把、
- 先执行
编译工程比较浩大,编译速度取决与CPU计算能力,我一般要1个小时
sudo make -j4
- 执行安装
sudo make install
安装速度很快
如果在make -j4的过程中出现错误,不用担心,根据错误原因在控制台解决,再次编译,会随着上一次卡住的进度,继续编译,不会重新开始的!
可能出现的报错
采用的是源码编译的方式,所以可以查看 build 文件夹下的日志文件 CMakeDownloadLog.txt,在日志文件CMakeDownloadLog.txt中搜索 boostdesc_bgm.i 关键词 (不是在文件夹中搜索),
发现这个文件下载失败了。日志文件里就有它的下载地址,直接复制其下载地址到网页可以看该到文件的源码,直接拷贝源码并生存同名文件,放在 opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
测试是否安装成功
找到 opencv/samples/cpp/example_cmake 目录下,官方已经给出了一个cmake的example,我们可以拿来测试下。按顺序执行:
cmake .
make
./opencv_example
即可看到打开了摄像头,在左上角有一个hello opencv ,即表示配置成功。
像这样-----原谅我的大红马赛克
我在这里贴出操作的历史纪录供大家参考
cds@cds-TN15S:~/Downloads/Compressed/opencv-4.2.0/samples/cpp/example_cmake$ pwd/home/cds/Downloads/Compressed/opencv-4.2.0/samples/cpp/example_cmake
cds@cds-TN15S:~/Downloads/Compressed/opencv-4.2.0/samples/cpp/example_cmake$ cmake .
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /usr/local (found version "4.2.0")
-- OpenCV library status:
-- config: /usr/local/lib/cmake/opencv4
-- version: 4.2.0
-- libraries: opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio
-- include path: /usr/local/include/opencv4
-- Configuring done
-- Generating done
-- Build files have been written to: /home/cds/Downloads/Compressed/opencv-4.2.0/samples/cpp/example_cmake
cds@cds-TN15S:~/Downloads/Compressed/opencv-4.2.0/samples/cpp/example_cmake$ make
Scanning dependencies of target opencv_example
[ 50%] Building CXX object CMakeFiles/opencv_example.dir/example.cpp.o
[100%] Linking CXX executable opencv_example
[100%] Built target opencv_example
cds@cds-TN15S:~/Downloads/Compressed/opencv-4.2.0/samples/cpp/example_cmake$ ./opencv_example
Built with OpenCV 4.2.0
Capture is opened
^C
python如何安装
如果使用的是anconda的话。直接执行conda install py-opencv
即可,如果是装的python的话/执行pip install py-opencv
测试方法