ubuntu12.04下Python 3.5.3 +OpenCV 3.2.0编译环境搭建

前端之家收集整理的这篇文章主要介绍了ubuntu12.04下Python 3.5.3 +OpenCV 3.2.0编译环境搭建前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

参考文章:http://www.jianshu.com/p/67293b547261

点击打开链接@H_502_3@

@H_502_3@

网络上有很多类似的文章,我参考了这里。但是我这里安装 OpenCV3.2.0 过程还是遇到不少问题,和网络上可以查到的问题不一样,总结下。

我这里使用的是Python 3.5.3 +OpenCV 3.2.0 大家可以参考看下。

@H_502_3@

用到的资源文件,可以到这里下载

Python 3.5.3@H_502_3@

http://download.csdn.net/download/mailyiran200101/9929105点击打开链接@H_502_3@

opencv-3.2.0.tar.gz

包括(opencv+opencv_contrib)

链接:http://pan.baidu.com/s/1micFFlu 点击打开链接 密码:4mnk@H_502_3@

>>提示:另外如果在opencv-3.2.0.tar.gz编译源码的时候,提示正在下载第三方ippicv时,但是很久都连不了,可以直接到这里下载

ippicv_linux_20151201.tgz@H_502_3@

http://download.csdn.net/download/mailyiran200101/9930459点击打开链接@H_502_3@

-----------------------------------------------------------------------------------------------------------------------------------------------------------

主要三个步骤

步骤一: 安装依赖库@H_502_3@ 步骤二:安装OpenCV 3.2.0@H_502_3@ 步骤三:遇到的问题以及如何解决
---------------------------------------------------------------------------------------------------------------------
@H_502_3@
正文开始:

@H_502_3@

步骤一: 安装依赖库

<1>更新系统的源

sudo apt-get update

@H_502_3@

<2>安装从源码构建 Open CV 的相关工具@H_502_3@

sudo apt-get install build-essential git cmake pkg-config

@H_502_3@

<3>加载不同格式图片的工具包

sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev@H_502_3@

@H_502_3@

<4>视频流 I/O 包@H_502_3@

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev@H_502_3@

@H_502_3@

<5>GTK,给图形界面操作用的@H_502_3@

sudo apt-get install libgtk2.0-dev@H_502_3@

@H_502_3@

<6>安装下面的包可以在 Open CV 里面优化各种函数@H_502_3@

sudo apt-get install libatlas-base-dev gfortran

@H_502_3@

步骤二:安装OpenCV 3.2.0 以及编译源码

@H_502_3@

安装OpenCV 3.2.0 有两种方式:这里先不说会遇到什么问题,先讲下各自的方法

@H_502_3@

<1> pip3直接搜索安装

@H_502_3@

依赖库安装完后。之后我可以直接就用python3系统自带的pip3安装opencv-python,指令如下:

pip3 install opencv-python@H_502_3@

这个指令会在python3中自动安装最新的opencv-python版本以及其它依赖库。

安装完成后在系统中进入python3.5,并查看是否安装成功

@H_502_3@

信息提示,opencv的版本是3.2.0。这个时候就说明已经安装好了。

安装完成后会在 /usr/local/lib/python3.5/site-packages目录下看到

cv2 和 opencv_python-3.2.0.8.dist-info 两个文件

这个方法非常的简单,快速,一开始我就使用这个方式,但是在之后测试运行代码的时候遇到报错的情况。

@H_502_3@

@H_502_3@

<2>OpenCV源码下载编译安装

第一步:获取源码

从 Github 上把 Open CV的源码 pull 下来,然后切换到新的版本 3.2.0@H_502_3@

@H_502_3@

cd /home/ljh /*路径自己选择,最好英文路径,避免编译报错*/@H_502_3@ git clone https://github.com/Itseez/opencv.git@H_502_3@ cd opencv@H_502_3@ git checkout 3.2.0@H_502_3@

---------------------------------

要完整地安装 OpenCV 3.2.0 的话,最好把 opencv_contrib 也拉下来@H_502_3@ @H_502_3@ @H_502_3@ cd /home/ljh /*路径自己选择,最好英文路径,避免编译报错*/@H_502_3@ git clone https://github.com/Itseez/opencv_contrib.git@H_502_3@ cd opencv_contrib@H_502_3@ git checkout 3.2.0@H_502_3@

----------------------------------

如果网络不好的话,也可以直接下载在本文开头提供的代码opencv-3.2.0.tar.gz包括opencv + opencv_contrib

解压后有两个文件 opencv 和 opencv_contrib 。

@H_502_3@

第二步:在 Python 3.5.3 下编译 Open CV

1》进opencv当前目录

cd /home/ljh/opencv

2》新建编译输出文件

mkdir build@H_502_3@

3》进入编译输出路径

cd build@H_502_3@ 4》配置编译变量

cmake -D CMAKE_BUILD_TYPE=RELEASE \@H_502_3@ -D CMAKE_INSTALL_PREFIX=/usr/local \@H_502_3@ -D PYTHON3INTERP_FOUND=/usr/local/bin/python3.5 \@H_502_3@ -D PYTHON3_EXECUTABLE=/usr/local/bin/python3.5 \@H_502_3@ -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.5/site-packages \@H_502_3@ -D PYTHON3_LIBRARY=/usr/local/lib/libpython3.5m.so \@H_502_3@ -D PYTHON3LIBS_FOUND=/usr/local/lib/libpython3.5m.so \@H_502_3@ -D PYTHON3_INCLUDE_DIR=/usr/local/include/python3.5m \@H_502_3@ -D PYTHON3_INCLUDE_PATH=/usr/local/include/python3.5m \@H_502_3@ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/site-packages/numpy/core/include \@H_502_3@ -D INSTALL_C_EXAMPLES=ON \@H_502_3@ -D INSTALL_PYTHON_EXAMPLES=ON \@H_502_3@ -D BUILD_EXAMPLES=ON \@H_502_3@ -D BUILD_opencv_python3=ON \@H_502_3@ -D OPENCV_EXTRA_MODULES_PATH=/home/ljh/opencv_contrib/modules ..@H_502_3@

@H_502_3@

!!!!配置变量非常关键,根据具体文件实际路径选择

##cmake的配置 一定要写明@H_502_3@ PYTHON3_INCLUDE_PATH@H_502_3@ PYTHON3_NUMPY_INCLUDE_DIRS@H_502_3@ 这两个变量,否则不会编译出所需要的python3 lib库@H_502_3@

@H_502_3@

5》开始编译@H_502_3@

make -j && make install (为了显著加快编译这里 可以: make -j8 意思是8核编译,根据自己机器来)@H_502_3@

@H_502_3@

6》验证编译完成@H_502_3@

如果编译成功,会在以下路径看到python3对应的lib库 cv2.cpython-35m-x86_64-linux-gnu.so

@H_502_3@

@H_502_3@

@H_502_3@

第三步:把编译出来的库替换 由方法一 ‘pip3 install opencv-python’ 生成的对应路径的lib库@H_502_3@

@H_502_3@

!!!!提示.so库的文件名如果不一样,要改成原来的名字

进入python3.5重新测试,是否可以使用,import cv2。经过测试目前,方法一出现的问题也解决了。测试代码成功。

@H_502_3@

@H_502_3@

步骤三:遇到的问题以及如何解决

<问题1>

在步骤二的时候,一开始用的 pip3直接安装opencv-python的方式,但是在运行测试代码 这句的时候cv2.namedWindow的时候,报了如下的错误,信息如下:

@H_502_3@

这个问题网上大多数的解决方法如下:

@H_502_3@

这里我按照网上方法卸载opencv-python,然后安装了依赖库 pkg-config,libgtk2.0-dev,然后再重新安装opencv-python,还是没有效果,后来我又测试了一个全新的ubuntu的环境,同样的安装正常,但还是到运行的时候报错。网络上可以查到的方法都没有效果。这里依赖库如下,就是 ‘步骤一 ’ 中已经安装的<2><5>,

<2>安装从源码构建 Open CV 的相关工具@H_502_3@

sudo apt-get install build-essential git cmake pkg-config@H_502_3@

<5>GTK,给图形界面操作用的

sudo apt-get install libgtk2.0-dev

@H_502_3@

解决方法

使用 ‘步骤二’ 中的第二种 <2>OpenCV源码下载编译安装 方法,从源码中重新生成新的python3.5 可以使用的lib库,替换之前由pip3 install opencv-python指令来安装的对应路径的lib库。参考前面'步骤二',有具体步骤。

@H_502_3@

@H_502_3@

<问题2>

下载编译opencv-3.2.0的时候网络原因导致第三方库ippicv下载不下来,编译报错

@H_502_3@

解决方法

这里可以用本文开头提供的已经下载好的ippicv_linux_20151201.tgz 文件直接放在以下路径下,再重新编译

我这里的路径如下:

opencv/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ippicv_linux_20151201.tgz@H_502_3@

@H_502_3@

<问题3>

没有编译出所需要的python3 lib库cv2.cpython-35m-x86_64-linux-gnu.so@H_502_3@

@H_502_3@

原因:还是在前面的编译的配置cmake 有问题,能否编译出python3能用的lib库,取决于这个文件

在opencv中 opencv/modules/python/python3目录下文件CMakeLists.txt中 有如下提示

-----------------------------------------------------------@H_502_3@ if(NOT PYTHON3_INCLUDE_PATH OR NOT PYTHON3_NUMPY_INCLUDE_DIRS)####注意这两个@H_502_3@ ocv_module_disable(python3)@H_502_3@ endif()@H_502_3@ @H_502_3@ @H_502_3@ set(the_description "The python3 bindings")@H_502_3@ set(MODULE_NAME python3)@H_502_3@ set(MODULE_INSTALL_SUBDIR python3)@H_502_3@ @H_502_3@ @H_502_3@ set(PYTHON PYTHON3)@H_502_3@ @H_502_3@ @H_502_3@ include(../common.cmake)@H_502_3@ @H_502_3@ @H_502_3@ unset(MODULE_NAME)@H_502_3@ unset(MODULE_INSTALL_SUBDIR)@H_502_3@ -----------------------------------------------------------@H_502_3@ ##所以前面cmake的配置 一定要写明,以下的两个变量。如果没有注明。默认就不会编译出lib库的。@H_502_3@ PYTHON3_INCLUDE_PATH@H_502_3@ PYTHON3_NUMPY_INCLUDE_DIRS@H_502_3@ #################################################################################@H_502_3@

@H_502_3@

其它的变量这里做下解释:

-D CMAKE_INSTALL_PREFIX=/usr/local \

##默认设置,直接写@H_502_3@ -D PYTHON3INTERP_FOUND=/usr/local/bin/python3.5 \

##用的是哪个python3,必须指明@H_502_3@ -D PYTHON3_EXECUTABLE=/usr/local/bin/python3.5 \

##用的是哪个python3,必须指明@H_502_3@ -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.5/site-packages \

##python3安装其它包文件的安放路径@H_502_3@ -D PYTHON3_LIBRARY=/usr/local/lib/libpython3.5m.so \

##python3.5对应的共享库文件,在编译安装python3.5的时候需要使用指令./configure -enable-shared ,否者会找不到这个文件@H_502_3@ -D PYTHON3LIBS_FOUND=/usr/local/lib/libpython3.5m.so \

##同上@H_502_3@ -D PYTHON3_INCLUDE_DIR=/usr/local/include/python3.5m \@H_502_3@ -D PYTHON3_INCLUDE_PATH=/usr/local/include/python3.5m \

##都是python3.5安装后对应包含的头文件路径@H_502_3@ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/site-packages/numpy/core/include \

##依赖库numpy后对应包含的头文件路径@H_502_3@ -D INSTALL_C_EXAMPLES=ON \@H_502_3@ -D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=ON \

##这三个没有也可以。@H_502_3@ -D BUILD_opencv_python3=ON \

##是否编译python3需要的库,似乎没什么用@H_502_3@ -D OPENCV_EXTRA_MODULES_PATH=/home/ljh/opencv_contrib/modules ..@H_502_3@

##外部opencv_contrib的路径

猜你在找的Ubuntu相关文章