参考链接:从从从从在ubuntu18.04中安装opencv_contrib-3.2.0采坑教程_小虎哥哥爱学习的博客-CSDN博客_ubuntu安装opencv3.2
opencv_version
opencv-3.2.0可以在github下载:GitHub - opencv/opencv at 3.2.0
但是opencv_contrib-3.2.0在github上的源码已经没有了,直接去百度找其他人分享的压缩包。
将这两个压缩包解压放在一个文件夹中(方便点):
其中opencv-3.2.0和opencv_contrib-3.2.0就是我们要使用的两个包,opencv_contrib-4.x是github上目前能下载的版本(下了运行报错,目前没发现有什么用)
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
使用这个工具主要是配置cmake参数更加方便,安装并打开cmake-gui:
sudo apt-get install cmake-gui
cmake-gui
更改界面中的两个路径(第二个路径在你opencv-3.2.0包中没有build这个文件,可以自己创建一个,也可以直接按照格式输入好,等自动生成):
路径改完点击Configure按钮,进行配置。配置过程一般都会报错,就是缺少对应的文件,报错的具体信息没有截图了,基本上下载对应缺少的包,按照报错信息放入对应的地址即可,很多包的寻找就看搜集资料能力了,我是在/opencv/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/中缺少ippicv_linux_20151201.tgz。
去对应的下载,注意缺少的是什么类型文件就放对应类型,比如压缩包类型就直接放,不需要解压。
下载完了再点击Configure完成配置
Configure完成后,设置cmake编译参数:
分别对应更改其Value
这一个对应自己的opencv_contrib-3.2.0中的modules文件夹(一定要指定到modules这个文件夹)
这些都配置完成后,点击Generate按钮,生成makefile文件,这个时候仍然可能报错,我就报错了,报错的原因就会是来源于opencv_contrib-3.2.0 文件,这个文件中也可能会出现不完整的情况,我就是在/opencv/opencv_contrib-3.2.0/opencv_contrib/modules/dnn/.download/bd5e3eed635a8d32e2b99658633815ef/v3.1.0/路径下缺少protobuf-cpp-3.1.0.tar.gz,跟之前一样,去网上下载对应缺少的包,放置在对应的位置即可,再点击Generate按钮。
当完成以上的步骤没有报错之后,切换到opencv-3.2.0/build目录,使用make和make install编译和安装。
cd ~/opencv/opencv-3.2.0/build/
make
sudo make install
这个过程如果成功,就成功了,其中还可能会有报错信息:
第一个问题是需要添加sudo:
第二个问题:
#error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
代表高亮这个文件需要编译器和库支持的ISO C++ 2011标准。必须使用-STD= C++ 11或-STD= GNU+11编译器选项来启用此支持。这个时候进入到modules这个文件夹下,打开CMakelists.txt文件,在其中加入:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
保存重新sudo make。
make过程很久,到达100即可: