最近在安装caffe,然后caffe安装失败,最后定位到可能出现的错误原因就是opencv版本。虽然不知道什么时间安装了opencv2,现在发现重新安装opencv3并不是那么的容易,也是花了几个小时才安装好了,这里记录以下填坑的step。
系统版本:
ubutu 16.04
anoconda 4.3.30
python 3.6
opencv 3.2.0
caffe 1.0.0
这里我们安装opencv3
是为了后面安装caffe
服务的。由于caffe是属于比较老的框架,然后对python 2.7
支持比较好,或者python3.5
以下也是可以的,但是由于我们的python
是3.6,以及tensorflow == 1.6
,因此我们尝试在python 3.6
的情况下,安装caffe CPU
版本。
由于不知道什么时间,处于什么目的安装了
opencv2
,于是乎我们先卸载低版本的opencv2
,但是卸载并不是那么简单的。
首先我们使用命令pkg-config opencv --modversion
查看当前opencv
版本号,发现是2.×.×
,具体的版本也不太记得了,只记得是首数字是2,所以我们先卸载老版本的。这里卸载参考了几篇文章:
当时卸载这个的时候,删了好多次都没有删掉干净,输入命令
pkg-config opencv --libs
pkg-config opencv --modversion
还是会出现opencv
相关的信息,然后我们抱着死马当活马医的态度,使用了如下命令:
step1,输入命令:
sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4
step2,输入命令(可能某些文件没有,但是没有太大关系):
sudo rm -rf /usr/local/include/opencv2
sudo rm -rf /usr/local/include/opencv
sudo rm -rf /usr/include/opencv
sudo rm -rf /usr/include/opencv2
sudo rm -rf /usr/local/share/opencv
sudo rm -rf /usr/local/share/OpenCV
sudo rm -rf /usr/share/opencv
sudo rm -rf /usr/share/OpenCV
sudo rm -rf /usr/local/bin/opencv*
sudo rm -rf /usr/local/lib/libopencv*
step3, 输入命令:
pkg-config opencv --libs
pkg-config opencv --modversion
这个时候发现没有再出现和opencv
相关的字眼了,就证明我们卸载老版本成功了,上面的暴力卸载仅仅作为参考!!如果您实在是没有什么法子,或者不担心东西不见了,可以试试~~或者您有更好的办法,也可以评论,互相学习。
参考文章:
1.去官网下载opencv
,在本教程中选用的是opencv3.2.0,其他版本的配置方法异曲同工。
下载链接https://github.com/opencv/opencv/releases/tag/3.2.0
,选择sources code(zip)
版本。
2.解压下载下来的zip包,并拷贝以及重命名。
unzip opencv-3.2.0.zip
sudo cp ./opencv-3.2.0 /home
sudo mv opencv-3.2.0 opencv
3.进入到解压后的文件包中
cd opencv
4.安装依赖库和cmake ,如果提醒需要apt-get update,那就先sudo su进入root权限,再sudo apt-get update,然后在执行下面命令
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
5.安装完cmake之后执行命令 ,创建编译文件夹
mkdir build
cd build
6.cmake一下
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
注意:如果已经在新的文件夹中编译,但是还会出现之前的报错,把cmakecache.txt删了再编译就可
7.运行上面第六步命令的时候,需要下载一个文件,如果网络不是很好的情况下,很有可能下载失败,我们需要手动进行替换。参考ICV: Downloading ippicv_linux_20151201.tgz 超时
解决的办法是手动下载:ippicv_linux_20151201.tgz
原始的ippicv_linux_20151201.tgz
是空的,我们用上面下载的进行替换,这个ippicv_linux_20151201.tgz
路径在我的电脑位置如下:
/home/xuchao/opencv3.2-master/all/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e
在替换之后,我们在重新输入步骤6的命令:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
这个时候就没有错误了。
8.执行命令,漫长的编译过程
sudo make
sudo make install
10.sudo make install
执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:
/usr/local/lib
11.执行如下命令使得刚才的配置路径生效
sudo ldconfig
如果出现错误,可以参考ubuntu16.04安装opencv3.4.1教程解决方法。我这里没有出现错误。
12.配置bash
sudo gedit /etc/bash.bashrc
在最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,执行如下命令使得配置生效
source /etc/bash.bashrc
更新
sudo updatedb
这句更新我的电脑好像没啥反应,我是直接输入后面直接退出了。
直接输入命令:
pkg-config --modversion opencv
一开始没有注意,后来安装caffe之后发现进入python环境之后
import cv2
出现ImportError: No module named cv2
错误,然后又重新安装Opencv3和caffe,又走了很多弯路。。。最后在一篇帖子发现解决方法。你只要添加一行代码就行了。。。这里版本的话,可以和pkg-config opencv --modversion
尽量一致就可以了
pip install opencv-python==3.2.0.8
真的是多走了多少弯路啊!!!
Ubuntu16.04安装opencv3.2.0
cd到一个文件下,注意/home/xuchao
可能需要换成你自己的位置。
cd /home/xuchao/opencv3.2-master/all/opencv-3.2.0/samples/cpp/example_cmake
目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行
cmake .
make
./opencv_example
即可看到打开了摄像头,在左上角有一个hello opencv
即表示配置成功。
虽然这个一闪而过,啥也没有看清,姑且认识它是好的吧~~~
opencv_contrib-3.2.0.zip是opencv 3以后新添加的一个仓库,这个新仓库包含很多让人兴奋的功能:脸部识别,文本探测,文本识别,新的边缘检测器,充满艺术感的图像修复,深度地图处理,新的光流和追踪算法等。但该仓库是大多数实验性代码放置的地方,一些API可能会有改变。
参考
然后可能需要重新卸载opencv3,在重新安装opencv,编译。好吧,我只是先安装caffe
,后面如果有需要在安装opencv_contrib-3.2.0
吧~~~
唉,没想到Caffe这么难装,tensorflow,pytorch它不香吗~