1.编译好的opencv和自己编译安装opencv的区别
Ubuntu安装了anaconda以后,
$conda install opencv
直接安装网上编译好的opencv,但是Ubuntu,python以及opencv不同版本之间使用都有差异,容易出问题;但是如果没出问题的话,这确实是最简单的安装方式.
$pip install opencv-python
或者$apt-get install python-opencv
或者$conda install –c https://conda.binstar.org/menpoopencv
具有同样问题,所以有的人选择自己编译安装opencv.
比如直接
$conda install opencv
之后,调用cv2.destroyAllWindows()时有时会出现:
Thefunction is not implemented. Rebuild the library with Windows, GTK+ 2.x orCarbon support. If you are on Ubuntu or Debian, install libgtk2.0‑dev and pkg‑config, then re‑runcmake or configure script
这就是网上编译好的opencv包在编译的过程中设置的选项可能和你当前需求不一样,解决方法就是自己编译安装opencv
2. Ubuntu下anaconda卸载opencv
安装前首先把之前的opencv卸载掉,conda install装的就用condauninstall卸,其他的安装方式也按照对应方式卸载就可以了.
然后
$cd /usr/local/lib
$sudo rm–r opencv相关的包
$cd/usr/local/include
$sudo rm–r opencv相关的包
看看/usr/local/下有没有其他opencv,有的话一并删除
删除一系列包可以用rm –r opencv*,以opencv开头的包就都会被删掉
3.安装opencv依赖包
在安装opencv之前需要先处理好依赖包,有的教程会告诉你下面两条:
$sudo apt-get update
$sudo apt-get upgrade
这两条不是必要的,有的包升级完了又是bug,比如numpy包升到1.12就会出现floatX64的问题,所以不用这两条也没问题
下面这些依赖包还是要装的:
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk5-qt4-dev
$ sudoapt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk5-qt4-dev
4.编译安装opencv
(1)官网下载opencv源码 解压opencv源码
(2)$cd 解压好的opencv文件夹
$mkdir build
$cd build
//万一编译失败,删掉build和/usr/local/下相应的opencv文件就行,不用把整个解压的opencv都删掉
(3)下载 ippicv_2017u3_lnx_intel64_general_20170822.tgz链接:(可以不执行,若下载速度慢,再执行此步骤)
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv
保存路径随意,我是放在默认的下载路径/home/lc/下载
修改opencv里相关配置文件:
打开终端,输入
gedit /home/lc/opencv_source/opencv/3rdparty/ippicv/ippicv.cmake #记得lc换成自己的用户名
将47行的
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
改为步骤1中手动下载的文件的本地路径:
"file:///home/lc/下载/" #(仅供参考,根据自己的路径填写)
编辑完成保存退出。
5.
wanglin@wanglin:~/caffe_software/opencv-3.4.0/build$ 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 INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_VTK=ON ..
//opencv3.x版本这么写是没有问题的,2.x版本需要指定CUDA,而3.x版本指定CUDA的话编译会出问题.
//有的cmake里还有WITH_QT=ON,QT4和QT5版本问题在这里也经常出现,这条别写了
//看看你的ffmpeg是否是YES,有的ffmpeg包在2.x版本是NO的状态,make不下去的,先去装好ffmpeg
6.
wanglin@wanglin:~/caffe_software/opencv-3.4.0/build$ make
出现问题:
(1)注意不要在make后加-j16
(2)collect2: error: ld returned 1 exit status
modules/viz/CMakeFiles/opencv_test_viz.dir/build.make:236: recipe for target 'bin/opencv_test_viz' failed
make[2]: *** [bin/opencv_test_viz] Error 1
CMakeFiles/Makefile2:3306: recipe for target 'modules/viz/CMakeFiles/opencv_test_viz.dir/all' failed
make[1]: *** [modules/viz/CMakeFiles/opencv_test_viz.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
解决方式:
sudo apt-get autoremove libtiff5-dev
sudo apt-get install libtiff5-dev
7.
wanglin@wanglin:~/caffe_software/opencv-3.4.0/build$ sudo make install
8.
将自己生成的动态链接库添加到系统能找到的路径:
$sudo gedit /etc/ld.so.conf.d/opencv.conf
在打开的写字板中填写/usr/local/lib
保存,并$sudo ldconfig
这个写法和下面的写法是等效的
$sudo -s
$echo"usr/local/lib" > /etc/ld.so.conf.d/opencv.conf
$sudoldconfig
9.设置路径:
$sudo mousepad /etc/bash.bashrc
文件末尾添加并保存:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出,然后执行如下命令使得配置生效
source /etc/bash.bashrc
//激活配置然后更新database
sudo updatedb
10.测试
$python
$import cv2
如果出现no module named cv2,那就把/home/wanglin/opencv-4.1.1/my_build_dir/lib/cv2.so拷到anaconda/lib/python2.7/site-packages下
11.一个demo
import cv2
img = cv2.imread('1.jpg')
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
没有报错就表明安装成功.