无论是Windows、Linux、还是树莓派 。配置python3的opencv环境都是让人头大的一件事情,尤其是许多人用pip安装以后,发现opencv虽然装上了,但是却装在了系统原生的python2下。
笔者也是经历过很多次失败之后,才安装成功。
本文采用编译的方法配置opencv,每一步都有ubuntu和树莓派的分别配置,由于两个系统极其相似(可以说是基本一样),所以并在一文详解。
一般来说,只要按照步骤去安装配置,就不会出错。废话不多说,开始表演!
step1:准备工作
1.ubuntu
安装前的准备工作:
1.1.对Ubuntu apt-get仓库进行更新
sudo apt-get update && sudo apt-get upgrade
1.2.安装必要的python插件及一些环境
sudo apt-get install python3-setuptools python3-dev -y
1.3.安装pip
sudo easy_install3 pip
1.4.对pip进行的更新(非必要)
pip install --upgrade pip
1.5.安装numpy包
pip install numpy
一些通用的包:
1.6.安装build-essential
sudo apt-get install build-essential -y
1.7.其他的一些开发用包
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev -y
2.树莓派
更新树莓派的系统与内核
2.1 sudo apt-get update
2.2 sudo apt-get upgrade
2.3 sudo rpi-update
更新内核时可能会报“No space left on device”错误,这是因为储存空间不足,最好在更新前检查内存使用(使用free命令即可)
step2:开始安装opencv
ubuntu/树莓派通用
1、首先,你要找一个合适的地方存放opencv的安装包,我选择的路径是~/Download/opencv
2、进入安装路径,并下载安装包
cd ~/Download/opencv wget https://github.com/Itseez/opencv/archive/3.0.0.zip
3、下载完成后,需要创建编译后文件存放的路径:
unzip 3.0.0.zip && cd opencv-3.0.0 mkdir build && cd build
4、接下来一步,要小心小心按照本地路径来配置,在build目录下执行如下命令:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local PYTHON3_EXECUTABLE=/usr/bin/python3 PYTHON_INCLUDE_DIR=/usr/include/python3.4 PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.4/dist-packages/numpy/core/include ..
注意这里所有的是一行命令,每一个路径都要确保存在,不要忘记最后的两个点,大多时候树莓派和ubuntu在PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so这个路径上会有不同,在树莓派中,cd到/usr/lib/目录下,找到一个目录下,存在libpython3.4m.so,(大不了一个一个找),找到了就记住路径替换即可。
这一步,主要是找到文件,比如找到python3.4 找到libpython3.4m.so 找到numpy/core/include 的路径,各自对应替换即可
5、最后执行安装命令:
make && sudo make install
记住是在build目录下执行,此步安装时间较长,可以先去看看opencv的入门教程神马的
6、如果你之前的步骤都完成了,那么恭喜你,开始验证吧
import cv2 >>> print(cv2.__version__) ... opencv-3.0.0
以上这篇Ubuntu16.04/树莓派Python3+opencv配置教程(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
- Author -
你微笑很美声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@