下载opencv源码和opencv_contrib扩展包
官网地址:https://opencv.org/releases.html
从opencv官网下载opencv3.4.0以及opencv_contrib(python需要 只是c语言使用不需要)压缩包。将下载的opencv3.4.0及opencv_contrib-3.4.0解压,并将opencv_contrib-3.4.0的文件夹放到opencv3.4.0的文件夹中。
安装相关依赖包
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
sudo apt-get install -y libopencv-dev
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
通过cmake进行编译安装
先进入文件,创建build
cd opencv-3.4.0
mkdir build
# 创建编译文件
cd build
如果直接输入cmake … 不出意外opencv会链到系统的python2.7上去(看cache可知),所以需要指定到咱下的anaconda的python3上;
cmake -D WITH_IPP=OFF -D PYTHON_DEFAULT_EXECUTABLE=/home/lqs/anaconda3/bin/python3 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=/home/naphid/Documents/anaconda3/bin/python3 -D PYTHON3_INCLUDE_DIR=/home/lqs/anaconda3/bin/python3.7m -D PYTHON3_LIBRARY=/home/lqs/anaconda3/lib/libpython3.7m.so.1.0 -D PYTHON_NUMPY_PATH=/home/lqs/anaconda3/lib/python3.7/site-packages -D OPENCV_ENABLE_MEMORY_SANITIZER=ON -D WITH_QT=ON -D ENABLE_CXX11=ON ..^C
the same as
cmake
-D WITH_IPP=OFF
-D PYTHON_DEFAULT_EXECUTABLE=/home/lqs/anaconda3/bin/python3
-D BUILD_opencv_python3=ON
-D BUILD_opencv_python2=OFF
-D PYTHON3_EXCUTABLE=/home/naphid/Documents/anaconda3/bin/python3
-D PYTHON3_INCLUDE_DIR=/home/lqs/anaconda3/bin/python3.7m
-D PYTHON3_LIBRARY=/home/lqs/anaconda3/lib/libpython3.7m.so.1.0
-D PYTHON_NUMPY_PATH=/home/lqs/anaconda3/lib/python3.7/site-packages
-D OPENCV_ENABLE_MEMORY_SANITIZER=ON
-D WITH_QT=ON -D ENABLE_CXX11=ON ..
cmake之后就会出现以下界面
进行make编译,需要很久,静静等待。
make -j8 #这里的8表示线程的数量
编译完了就可以开始安装了
sudo make install
安装完成
完成之后就可以通过import cv2来验证了
安装注意事项
- 错误1:
解决办法:如果你没有加入opencv的扩展包,然后放入在里面继续运行 - 错误2:/home/lqs/Downloads/opencv-3.4.0/build/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:10: fatal error: linux/videodev.h: 没有那个文件或目录
解决办法:这个错误的解决方式是cmake 的时候添加 -D ENABLE_CXX11=ON - 错误3:linux下报错没有头文件那个文件或目录
解决办法:将/usr/include/86_64-linux-gnu/sys下的io.h复制到/usr/include下面,链接 - 错误4: linux/videodev.h: 没有那个文件或目录
解决办法:1.sudo apt-get install libv4l-dev
2.sudo ln -s /usr/include/libvl1-videodev.h /usr/include/linux/videodev.h
(如果还是不行就删除之后在执行这句) - 错误5: sys/videodev.h: 没有那个文件或目录
解决办法:1.sudo cp /usr/include/opencv2/videoio/videoio_c.h /usr/include/x86_64-linux-gnu/sys
2.sudo ln -s /usr/include/x86_64-linux-gnu/sys/videoio_c.h /usr/include/x86_64-linux-gnu/sys/videoio.h
- 错误6:Looking for ccache - not found
解决办法:sudo apt install ccache
- 错误7:Found ZLIB: /usr/local/lib/libz.so (found suitable version “1.2.11”, minimum required is “1.2.3”)
解决办法:链接 - 错误8:~/cv2.cpp:885:34: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
解决办法:打开cv2.cpp 找到885行 将char* str = PyString_AsString(obj)
改为char* str = const_cast<char*>(PyString_AsString(obj))