1. sudo apt-get install build-essential
2. sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
3. sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
##报错 libtiffs-dev 而非libtiff-dev
无法定位软件包:libjasper-dev 解决办法只能删除这个包
修改为:sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev
4. sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
5. sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
6. sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
7. sudo apt-get install ffmpeg
8. wget https://github.com/opencv/opencv/archive/3.2.0.zip # 从github上直接下载或者clone也可。
Gitcolne代码:git clone [email protected]:opencv/opencv.git
9. wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip(这种方式下载是3.2版本)
下载完成后解压即可
Gitclone代码:git clone [email protected]:opencv/opencv_contrib.git
(gitclone下载是最新版本,不一定是3.2)
所以上面两种的下载方式一定要相同,否则可能会报出很多你意想不到的错误。
10. cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr
-D INSTALL_PYTHON_EXAMPLES=ON
-D INSTALL_C_EXAMPLES=OFF
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules
-D PYTHON_EXCUTABLE=/usr/bin/python2.7
-D WITH_TBB=ON
-D WITH_V4L=ON
-D WITH_QT=ON
-D WITH_GTK=ON
-D WITH_OPENGL=ON
-DBUILD_EXAMPLES=ON ..
注意中间均是只有一个空格,最后有两个点。。
CMAKE_INSTALL_PREFIX:安装的python目录前缀,其实就是指定了python模块的安装路径:CMAKE_INSTALL_PREFIX/lib/python2.7/dist-packages。获取该路径的方式可以用python -c "import sys; print sys.prefix"
PYTHON_EXCUTABLE:指定python路径
OPENCV_EXTRA_MODULES_PATH: 指定opencv所需模块的路径,就是之前我们所说的contrib
报错:
CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in /usr/bin
解决办法:网上搜的大部分是重装cmake
方式一:
(1) 步 : sudo apt-get remove cmake cmake-data 卸载 cmake-data包的东西一起删掉
(2)步:sudo -E add-apt-repository -y ppa:george-edison55/cmake-3.x
(3)步:sudo -E apt-get update
(4)步:sudo apt-get install cmake
方式二:
aptitude purge cmake
aptitude install cmake
以上两种方式都不起作用
方法三:另外一种方式,加入环境变量
Sudo vim /etc/profile
export CMAKE_ROOT=/usr/local/bin 加入文件
Soruce /etc/profile 更新文件
也不成功;
最后我发现build文件夹下,有两个文件,make 和-D,这可能是之前错误生成的两个文件,于是我删除build文件下,重新进行了cmke 发现成功了,所以也不知是上面哪中方式起了作用。
但是又报了不一样的错误:
qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory
CMake Error at /usr/share/cmake-3.7/Modules/FindQt4.cmake:1318 (message):
Found unsuitable Qt version "" from NOTFOUND, this code requires Qt 4.x
Call Stack (most recent call first):
cmake/OpenCVFindLibsGUI.cmake:34 (find_package)
原因:没有安装qmake
解决办法:
sudo apt-get install cmake qt5-default qtcreator
结果又发生错误:
CMake Error at /home/king/opencv-3.2.0/cmake/OpenCVDownload.cmake:56 (message):
ERROR: ocv_download() unsupported arguments:
PACKAGE;vgg_generated_48.i;HASH;e8d0dcd54d1bcfdc29203d011a797179;URL;https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/;DESTINATION_DIR;/home/king/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/../src;DOWNLOAD_DIR;/home/king/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/.download
Call Stack (most recent call first):
/home/king/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/download_vgg.cmake:13 (ocv_download)
/home/king/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/download_vgg.cmake:20 (vgg_download)
/home/king/opencv_contrib-3.2.0/modules/xfeatures2d/CMakeLists.txt:4 (include)
解决办法:无
查了很多资料,用了很多办法都没有解决,
1.比如将报错的make文件中,fileName改为PACKAGE
对应博客: http://blog.csdn.net/qsy2000/article/details/70158537
2.比如,自己下载vgg_generated_48.i,保存在相应目录文件下。
对应博客地址:
http://blog.csdn.net/u013832707/article/details/73614798
https://www.cnblogs.com/zjutzz/p/6714490.html
问题解决:
这个问题真的整的我头大,最后实在没辙,(快要放弃,此时已经花费了很长时间了)我又想是不是我opencv_contrib的版本问题,因为我之前下载opencv和open_contrib采取了两种方式,前者是gitclone 后者是链接直接下载解压。不管有没有用这都是我最后的尝试了。然后我把build文件夹删除,opencv_contrib也删除,重新用gitclone的下载方式,然后我又重新进行build文件,因为之前看有人用release文件名而不用build文件名,我就安装步骤重新创建了release(build)文件夹,重新进行camke操作,这时候终于成功了!!!太不容易了。
总结:
就是遇到这种编译的问题,碰到问题采用任何一种方法解决后,都要重新进行编译,就是从头开始编译,不要懒省流程,这样反而会损失更多时间。
回顾:
执行测试时,我的版本是3.3.1 不是3.2 ,我可能明白了问题的关键所在,有可能我上面遇到的问题都是由opencv与opencv_contrib 版本不一致引起的,下次一定要更仔细才行。
11. make -j4 #4是自己电脑核数
12. sudo make install #安装
13. sudo /bin/bash -c 'echo "/usr/lib" > /etc/ld.so.conf.d/opencv.conf'
14. sudo ldconfig
安装完成以后,重启下机器。编译之后应该会在CMAKE_INSTALL_PREFIX/lib/python2.7/dist-packages/目录下找到cv2.so。打开python console,检测opencv版本python -c "import cv2; print cv2.__version__"。如果正确安装的话则会输出3.2.0。
参考博客:https://www.cnblogs.com/arkenstone/p/6490017.html