参考文章:http://www.jianshu.com/p/67293b547261
网络上有很多类似的文章,我参考了这里。但是我这里安装 OpenCV3.2.0 过程还是遇到不少问题,和网络上可以查到的问题不一样,总结下。
我这里使用的是Python 3.5.3 +OpenCV 3.2.0 大家可以参考看下。
用到的资源文件,可以到这里下载
Python 3.5.3
http://download.csdn.net/download/mailyiran200101/9929105点击打开链接
opencv-3.2.0.tar.gz
包括(opencv+opencv_contrib)
链接:http://pan.baidu.com/s/1micFFlu 点击打开链接 密码:4mnk
>>提示:另外如果在opencv-3.2.0.tar.gz编译源码的时候,提示正在下载第三方ippicv时,但是很久都连不了,可以直接到这里下载
ippicv_linux_20151201.tgz
http://download.csdn.net/download/mailyiran200101/9930459点击打开链接
-----------------------------------------------------------------------------------------------------------------------------------------------------------
主要三个步骤
步骤一: 安装依赖库
步骤二:安装OpenCV 3.2.0
步骤三:遇到的问题以及如何解决
步骤一: 安装依赖库
<1>更新系统的源
sudo apt-get update
<2>安装从源码构建 Open CV 的相关工具
sudo apt-get install build-essential git cmake pkg-config
<3>加载不同格式图片的工具包
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
<4>视频流 I/O 包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
<5>GTK,给图形界面操作用的
sudo apt-get install libgtk2.0-dev
<6>安装下面的包可以在 Open CV 里面优化各种函数
sudo apt-get install libatlas-base-dev gfortran
步骤二:安装OpenCV 3.2.0 以及编译源码
安装OpenCV 3.2.0 有两种方式:这里先不说会遇到什么问题,先讲下各自的方法
<1> pip3直接搜索安装
依赖库安装完后。之后我可以直接就用python3系统自带的pip3安装opencv-python,指令如下:
pip3 install opencv-python
这个指令会在python3中自动安装最新的opencv-python版本以及其它依赖库。
安装完成后在系统中进入python3.5,并查看是否安装成功
信息提示,opencv的版本是3.2.0。这个时候就说明已经安装好了。
安装完成后会在 /usr/local/lib/python3.5/site-packages目录下看到
cv2 和 opencv_python-3.2.0.8.dist-info 两个文件夹
这个方法非常的简单,快速,一开始我就使用这个方式,但是在之后测试运行代码的时候遇到报错的情况。
<2>OpenCV源码下载编译安装
第一步:获取源码
从 Github 上把 Open CV的源码 pull 下来,然后切换到新的版本 3.2.0
cd /home/ljh /*路径自己选择,最好英文路径,避免编译报错*/
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.2.0
---------------------------------
要完整地安装 OpenCV 3.2.0 的话,最好把 opencv_contrib 也拉下来
cd /home/ljh /*路径自己选择,最好英文路径,避免编译报错*/
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.2.0
----------------------------------
如果网络不好的话,也可以直接下载在本文开头提供的代码,opencv-3.2.0.tar.gz(包括opencv + opencv_contrib)
解压后有两个文件 opencv 和 opencv_contrib 。
第二步:在 Python 3.5.3 下编译 Open CV
1》进opencv当前目录
cd /home/ljh/opencv
mkdir build
3》进入编译输出路径
cd build
4》配置编译变量
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON3INTERP_FOUND=/usr/local/bin/python3.5 \
-D PYTHON3_EXECUTABLE=/usr/local/bin/python3.5 \
-D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.5/site-packages \
-D PYTHON3_LIBRARY=/usr/local/lib/libpython3.5m.so \
-D PYTHON3LIBS_FOUND=/usr/local/lib/libpython3.5m.so \
-D PYTHON3_INCLUDE_DIR=/usr/local/include/python3.5m \
-D PYTHON3_INCLUDE_PATH=/usr/local/include/python3.5m \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/site-packages/numpy/core/include \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_python3=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/ljh/opencv_contrib/modules ..
!!!!配置变量非常关键,根据具体文件实际路径选择
##cmake的配置 一定要写明
PYTHON3_INCLUDE_PATH
PYTHON3_NUMPY_INCLUDE_DIRS
这两个变量,否则不会编译出所需要的python3 lib库
5》开始编译
make -j && make install (为了显著加快编译这里 可以: make -j8 意思是8核编译,根据自己机器来)
6》验证编译完成
如果编译成功,会在以下路径看到python3对应的lib库 cv2.cpython-35m-x86_64-linux-gnu.so
第三步:把编译出来的库替换 由方法一 ‘pip3 install opencv-python’ 生成的对应路径的lib库
进入python3.5重新测试,是否可以使用,import cv2。经过测试目前,方法一出现的问题也解决了。测试代码成功。
步骤三:遇到的问题以及如何解决
<问题1>
在步骤二的时候,一开始用的 pip3直接安装opencv-python的方式,但是在运行测试代码 这句的时候cv2.namedWindow的时候,报了如下的错误,信息如下:
这个问题网上大多数的解决方法如下:
这里我按照网上方法卸载opencv-python,然后安装了依赖库 pkg-config,libgtk2.0-dev,然后再重新安装opencv-python,还是没有效果,后来我又测试了一个全新的ubuntu的环境,同样的安装正常,但还是到运行的时候报错。网络上可以查到的方法都没有效果。这里依赖库如下,就是 ‘步骤一 ’ 中已经安装的<2><5>,
<2>安装从源码构建 Open CV 的相关工具
sudo apt-get install build-essential git cmake pkg-config
<5>GTK,给图形界面操作用的
sudo apt-get install libgtk2.0-dev
解决方法:
使用 ‘步骤二’ 中的第二种 <2>OpenCV源码下载编译安装 方法,从源码中重新生成新的python3.5 可以使用的lib库,替换之前由pip3 install opencv-python指令来安装的对应路径的lib库。参考前面'步骤二',有具体步骤。
<问题2>
下载编译opencv-3.2.0的时候网络原因导致第三方库ippicv下载不下来,编译报错
解决方法:
这里可以用本文开头提供的已经下载好的ippicv_linux_20151201.tgz 文件直接放在以下路径下,再重新编译
我这里的路径如下:
opencv/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz
<问题3>
没有编译出所需要的python3 lib库cv2.cpython-35m-x86_64-linux-gnu.so
原因:还是在前面的编译的配置cmake 有问题,能否编译出python3能用的lib库,取决于这个文件
在opencv中 opencv/modules/python/python3目录下文件CMakeLists.txt中 有如下提示。
-----------------------------------------------------------
if(NOT PYTHON3_INCLUDE_PATH OR NOT PYTHON3_NUMPY_INCLUDE_DIRS)####注意这两个
ocv_module_disable(python3)
endif()
set(the_description "The python3 bindings")
set(MODULE_NAME python3)
set(MODULE_INSTALL_SUBDIR python3)
set(PYTHON PYTHON3)
include(../common.cmake)
unset(MODULE_NAME)
unset(MODULE_INSTALL_SUBDIR)
-----------------------------------------------------------
##所以前面cmake的配置 一定要写明,以下的两个变量。如果没有注明。默认就不会编译出lib库的。
PYTHON3_INCLUDE_PATH
PYTHON3_NUMPY_INCLUDE_DIRS
#################################################################################
其它的变量这里做下解释:
-D CMAKE_INSTALL_PREFIX=/usr/local \
##默认设置,直接写
-D PYTHON3INTERP_FOUND=/usr/local/bin/python3.5 \
##用的是哪个python3,必须指明
-D PYTHON3_EXECUTABLE=/usr/local/bin/python3.5 \
##用的是哪个python3,必须指明
-D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.5/site-packages \
##python3安装其它包文件的安放路径
-D PYTHON3_LIBRARY=/usr/local/lib/libpython3.5m.so \
##python3.5对应的共享库文件,在编译安装python3.5的时候需要使用指令./configure -enable-shared ,否者会找不到这个文件
-D PYTHON3LIBS_FOUND=/usr/local/lib/libpython3.5m.so \
##同上
-D PYTHON3_INCLUDE_DIR=/usr/local/include/python3.5m \
-D PYTHON3_INCLUDE_PATH=/usr/local/include/python3.5m \
##都是python3.5安装后对应包含的头文件路径
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/site-packages/numpy/core/include \
##依赖库numpy后对应包含的头文件路径
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
##这三个没有也可以。
-D BUILD_opencv_python3=ON \
##是否编译python3需要的库,似乎没什么用
-D OPENCV_EXTRA_MODULES_PATH=/home/ljh/opencv_contrib/modules ..
##外部opencv_contrib的路径
原文链接:https://www.f2er.com/ubuntu/351736.html