1. OpenCV3.4.2 下载
https://github.com/opencv/opencv/archive/3.4.2.zip
输入命令: wget https://github.com/opencv/opencv/archive/3.4.2.zip
2. 安装准备
//软件源更新
sudo apt-get update
3. 安装 gcc 和 g++ 开发环境
sudo apt-get install build-essential
查看 gcc 版本 然后安装 统一版本的 g++
gcc --version
安装 g++
sudo apt-get install g++-4.4
查看 g++ 版本
g++ --version
4. 安装构建OpenCV的相关工具
//安装cmake、git和pkg-config
sudo apt-get install cmake git pkg-config
5. 安装常用图像工具包
//安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev ???
//安装tif格式图像工具包
sudo apt-get install libtiff5-dev
//安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev
//安装png图像工具包
sudo apt-get install libpng12-dev
6. 安装视频I/O包(注意最后一个包的数字“4”后面是“L”)
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
7. 安装gtk2.0(树莓派很可能下载错误,更换中科大或者清华源即可,ubuntu有可能出现包版本过高的情况,需要将依赖包降级安装)
sudo apt-get install libgtk2.0-dev
8. 安装优化函数包
sudo apt-get install libatlas-base-dev gfortran
9. 解压opencv-3.4.2,并在目录下创建Release文件夹
unzip 3.4.2.zip
cd opencv-3.4.2
mkdir Release
10. 在终端进入Release文件夹
cd /home/deepin/peng/opencv-3.4.2/Release
11. CMake配置编译
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
如果以下错误:
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory.
执行以下指令:
sudo apt-get install qt5-default
在重复步骤11的命令,即可成功,如下图:
12. Make编译(至少6个小时)
sudo make
1) 报错:/usr/bin/cmake: /usr/local/lib/libcurl.so.4: no version information available(如下图)
解决方案:
参考:https://serverfault.com/questions/696631/libcurl-so-4-no-version-information-available
https://stackoverflow.com/questions/30017397/error-curl-usr-local-lib-libcurl-so-4-no-version-information-available-requ
2) 报错:../../lib/libopencv_dnn.so.3.4.2:对‘google::protobuf::internal::Release_CompareAndSwap(long volatile*, long, long)’未定义的引用(如下图)
解决方案:
参考:https://github.com/protocolbuffers/protobuf/issues/3937
13. 安装
sudo make install
14. 环境配置添加库路径
sudo gedit /etc/ld.so.conf.d/opencv.conf
或者 sudo vi /etc/ld.so.conf.d/opencv.conf
#打开后可能是空文件,在文件内容最后添加
/usr/local/lib
15. 更新系统库
sudo ldconfig
16. 配置bash,执行如下命令
sudo gedit /etc/bash.bashrc
或者sudo vi /etc/bash.bashrc
# 在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
17. 保存退出,然后执行如下命令使得配置生效
source /etc/bash.bashrc
# 激活配置然后更新database
sudo updatedb
18. 测试opencv(C++),这时,已经可以通过C++使用opencv了
1) 创建工作目录
mkdir ~/opencv-lena
cd ~/opencv-lena
gedit DisplayImage.cpp
2) 编辑如下代码
1 #include <iostream> 2 #include <opencv2/opencv.hpp> 3 4 using namespace cv; 5 using namespace std; 6 7 int main() 8 { 9 Mat image; 10 //必须使用绝对路径 11 image = imread("/home/nic/20171125154428073.png"); 12 if ( image.empty() ) 13 { 14 cout<<"No image data!"<< endl; 15 return -1; 16 } 17 namedWindow("Display Image"); 18 imshow("Display Image", image); 19 waitKey(0); 20 return 0; 21 }
3) 创建CMake编译文件
vi CMakeLists.txt
写入如下内容:
1 cmake_minimum_required(VERSION 3.10) 2 project(demo) 3 set(CMAKE_CXX_STANDARD 11) 4 find_package(OpenCV REQUIRED) 5 add_executable(demo DisplayImage.cpp) 6 target_link_libraries( demo ${OpenCV_LIBS} )
4) 编译
cd ~/opencv-lena
cmake .
make
注:如果执行cmake . 编译时,报错:
解决方案:
参考:https://stackoverflow.com/questions/30017397/error-curl-usr-local-lib-libcurl-so-4-no-version-information-available-requ
5) 执行
./demo
本文编译主要参考文档:
https://blog.csdn.net/hjxu2016/article/details/82390434
https://blog.csdn.net/qq_33591712/article/details/83279982