一、前几天在ubuntu14.04系统上通过源码安装了opencv3.1后,在python控制台输入
import cv2
提示找不到cv2库。我赶紧百度找了下原因,网上说执行这个命令就行
sudo apt-get install Python-OpenCv
执行了果然好了。
二、今天把程序往服务器上迁移,结果总是报错,错的很离谱
image, contours, hierarchy = cv2.findContours(img1,cv2.RETR_LIST,cv2.CHAIN_APPROX_NONE)
这一句出错,说cv2.findContours返回的是2个返回值,不是3个。当时我就惊呆了好吗,我在本机上明明返回的是3个,挪到服务器上就返回2个了。奔溃。
赶紧看一下cv2的版本,调用
cv2.__version__
结果果然,服务器上的opencv是2.48版本,本机上的是3.1版本。也就是说服务器上的opencv3.1版本没有安装成功。
三、赶紧卸了Python-OpenCv库,开始老老实实安装OpenCv3.1
但是呢,不知为什么,OpenCv3.1源码编译后在输出文件夹就是不生成cv2.so文件。这个文件就是python引用的库文件,没有这个文件还怎么玩啊。
我开始看cmake的输出结果,果然,在命令行下cmake输出了
OpenCV modules:
-- To be built: core flann hdf imgproc ml photo reg surface_matching video dnn fuzzy imgcodecs shape videoio highgui objdetect plot superres ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo structured_light tracking videostab xfeatures2d ximgproc aruco optflow stitching
-- Disabled: world contrib_world
-- Disabled by dependency: -
-- Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 viz cvv matlab sfm
Python 2: -- Interpreter: /usr/bin/python2.7 (ver 2.7.6)
我对比了之前在其他服务器上配置的结果,应该是:
.........
OpenCV modules:
-- To be built: core flann hdf imgproc ml photo reg surface_matching video dnn fuzzy imgcodecs shape videoio highgui objdetect plot superres ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo structured_light tracking videostab xfeatures2d ximgproc aruco optflow stitching python2
-- Disabled: world contrib_world
-- Disabled by dependency: -
-- Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python3 viz cvv matlab sfm
--
.........
Python 2: -- Interpreter: /usr/bin/python2.7 (ver 2.7.6) -- Libraries: /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.6) -- numpy: /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.8.2) -- packages path: lib/python2.7/dist-packages
这就太显然了,cmake没有找到python的库啊。所以没有安装cv2的python接口文件。
四、配置cv2的python接口文件
首先,我把cmake从原来的2.8版本升级到了3.2版本,方法自行百度(事实上应该可以不用升级)
然后删除cmake的缓存文件,怎么删呢?就是删除cmake运行文件夹下的
CMakeCache.txt
然后从新cmake一下,everything goes smoothy!
当然需要重新编译:
sudo make -j4 -B
这时候,在lib文件夹下启动python console是可以import cv2的,但是其他文件夹下不行。然后执行
sudo make install
然后就ok了!搞了一天我屮艸芔茻。