Windows(不过我没安装过)
Windows平台比较幸运的是,有人已经帮我们编译好了。
先去下面网址下载whl文件
http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
下载好了使用pip进行安装:
pip install opencv_python-3.1.0-cp35-cp35m-win_amd64.whl
参考链接是:https://blog.csdn.net/tinyzhao/article/details/52738647
Ubuntu
在Ubuntu下要自己编译安装了。
(1)安装必要的工具
apt-get install cmake wget python3.5-dev build-essential unzip \
libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libgtk-3-dev python3-setuptools
逐条拷贝。
(2)安装pip3
sudo apt-get install python3-pip
(3)安装numpy
pip3 install numpy
(4)下载并编译OpenCV3
wget https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip 3.1.0.zip
cd opencv-3.1.0
mkdir build
cd build
CFLAGS="-pipe -O3 -march=core-avx-i" CFLAGS="-pipe -O3 -march=core-avx-i" cmake -D INSTALL_PYTHON_EXAMPLES=ON -D WITH_XIMEA=BOOL:ON ..
(5)安装
make -j32
sudo make install
在make -j32时,遇到错误:
/root/opencv-3.1.0/modules/core/include/opencv2/core/private.cuda.hpp:165:52: note: in definition of macro ‘nppSafeCall’
#define nppSafeCall(expr) cv::cuda::checkNppError(expr, __FILE__, __LINE__, CV_Func)
^
/root/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:274:146: error: ‘nppiGraphcut8_32f8u’ was not declared in this scope
static_cast<int>(terminals.step), static_cast<int>(leftTransp.step), sznpp, labels.ptr<Npp8u>(), static_cast<int>(labels.step), state) );
^
/root/opencv-3.1.0/modules/core/include/opencv2/core/private.cuda.hpp:165:52: note: in definition of macro ‘nppSafeCall’
#define nppSafeCall(expr) cv::cuda::checkNppError(expr, __FILE__, __LINE__, CV_Func)
^
modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/build.make:146: recipe for target 'modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o' failed
make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error 1
make[2]: *** 正在等待未完成的任务....
CMakeFiles/Makefile2:9120: recipe for target 'modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all' failed
make[1]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
[ 91%] Linking CXX shared library ../../lib/libopencv_photo.so
[ 91%] Built target opencv_photo
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error 1
解决:
那是因为 cuda-8.0
与OpenCV 3.1.0
发生了冲突。解决方法:修改openCV 3.1.0
源码,使其兼容cuda-8.0
$ sudo vi opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp
将第四十五行位置的
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined(HAVE_CUDA)||defined(CUDA_DISABLER)||(CUDART_VERSION>=8000)
然后重新执行
解决了。
遇到错误:
opencv都安装好了。
但是ImportError: No module named 'cv2'
解决:
pip3 install opencv-python
之后再import。
测试
import cv2
img=cv2.imread('1.jpg')
cv2.imshow('1',img)
cv2.waitKey(0)
- 搞定!