opencv python3树莓派_树莓派3b pyhon3.5 安装opencv3.1全纪录

整整搞了一天,参考了好多文章,其实大致的思路都差不多,但是很多细节方面,还是有非常大的坑,记录一下,希望能帮到大家。

提醒:先确保有足够大的空间,最好要预留3,4G的剩余空间吧。

安装依赖包

老步骤,在进行软件安装之前首先要更新一下现有的软件包:

sudo apt-get update

sudo apt-get upgrade #更新系统,慎重选择

注意:apt-get update 你要做一下,但是apt-get upgrade除非你安装不成功,否则不要运行,时间有可能会很长...

安装cmake:

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

安装各种图像格式的包:

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

安装视频I/O包:

sudo apt-get install libavcodec-dev libavformat-dev libswcale-dev libv4l-dev

sudo apt-get install libxvidcore-dev libx264-dev

安装GTK开发库:

sudo apt-get install libgtk2.0-dev

再安装几个依赖关系进一步优化OpenCV:

sudo apt-get install libatlas-base-dev gfortran

确认下python开发环境的安装(可以不做):

sudo apt-get install python2.7-dev python3-dev

下载OpenCV源代码

我在~下新建一个opencv的文件夹,用来存放接下来要用的各种东西。然后切换到这个目录下。

cd~

mkdir opencv

cd opencv

下载opencv 3.1源代码

wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip

unzip opencv.zip

全面安装后,我们还需抓取OpenCV的contrib的存储库:

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip

unzip opencv_contrib.zip

警告:opencv和opencv_contrib的版本一定要相同!!!!

注意:很多文章中此处是用git下载源代码的,但是opencv比较大,下载源代码的话时间将会很长。用wget的方式下载压缩包时间可控点。最省时间的方法:在windows下用迅雷下载这两个zip文件,然后放到树莓派下解压缩,这种时间最少。

安装python的虚拟环境管理软件

那就是:virtualenv和virtualenvwrapper

我已经写了一篇文章了,具体安装过程参考:

https://my.oschina.net/u/2396236/blog/1632522

新建虚拟环境

virtualenv和virtualenvwrapper安装配置完成后,新建一个名为opencv的python3虚拟环境

mkvirtualenv -p /usr/bin/python3 opencv

确认自己已经进入了这个虚拟环境,假如没有进入,需要用workon进入虚拟环境

workon opencv

进入虚拟环境后,在命令行的左侧的括号内会出现虚拟环境的名字

222735_6G0b_2396236.png

接下来我们的操作,就是在名为opencv的虚拟环境中完成的,这个虚拟环境使用python3创建的。

安装numpy

numpy是opencv的依赖包,要先在虚拟环境中安装一下。

pip install numpy

编译安装OpenCV

接着我们使用CMake设置构建:

cd ~/opencv/opencv-3.1.0/

mkdir build

cd build

cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-3.1.0/modules \

-D BUILD_EXAMPLES=ON ..

注意:这里格外需要注意下OPENCV_EXTRA_MODULES_PATH这个参数,要指定你自己的opencv contrib目录地址

接下来就要进行编译了

make

大部分文章会建议用

make -j4

来调用4个核心来编译,时间大大缩短。但是据说这样不是太稳定,容易出错。我直接用make命令单核心编译的,花了差不多4个小时,据说用4核心,差不多一个半小时。大家不妨一试。

make的过程中,很可能报如下的错,让人倒吸一口凉气:

Generating precomp.hpp.gch/opencv_core_Release.gch

2 In file included from /usr/include/c++/6/bits/stl_algo.h:59:0,

3 from /usr/include/c++/6/algorithm:62,

4 from /opt/opencv/opencv-3.1.0/modules/core/include/opencv2/core/base.hpp:53,

5 from /opt/opencv/opencv-3.1.0/modules/core/include/opencv2/core.hpp:54,

6 from /opt/opencv/opencv-3.1.0/modules/core/include/opencv2/core/utility.hpp:52,

7 from /opt/opencv/build/modules/core/precomp.hpp:49:

8 /usr/include/c++/6/cstdlib:75:25: fatal error: stdlib.h: 没有那个文件或目录

9 #include_next

参考https://www.cnblogs.com/liutianchen/p/6089878.html

大概的意思是/usr/include/c++/6/cstdlib文件中的include_next在这里不好使,得老老实实用include代替。于是我们需要修改报错部分的源代码,将include_next 修改成 include。make的过程中,大概有两处需要按此修改。就行了。

等漫长的编译100%完成后,终于可以安装了

安装opencv

sudo make install

sudo ldconfig

为虚拟环境引用类库

如果是python3+虚拟环境,将编译好的so文件,链接到虚拟环境中。

cd ~/.virtualenvs/opencv/lib/python3.5/site-packages/

ln -s /usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so

注意,此处又有坑:

所有文章中都指出编译好的so文件,位于/usr/local/lib/python3.5/site-packages,文件名为cv2.so。

我试验过两次,cv2.so原始文件名应该是cv2.cpython-35m-arm-linux-gnueabihf.so。两次生成的目录名居然不一样:

第一次:/usr/local/lib/python3.5/下根本没有site-packages目录,只有一个dist-packages目录,dist-packages下也没有cv2.so文件,却有一个cv2.cpython-35m-arm-linux-gnueabihf.so文件,这就是opencv编译好以后的文件。

第二次:site-packages存在,cv2.cpython-35m-arm-linux-gnueabihf.so文件在site-packages目录下。原因不明。我感觉好慌....

安装成功,检查版本号

python

>>> import cv2

>>> print(cv2.__version__)

3.1.0

若成功显示版本号,则opencv安装成功。

删除下载解压缩的文件和文件夹,这些文件和文件夹都很占用空间:

opencv_contrib.zip opencv.zip opencv_contrib-3.0.0/ opencv-3.0.0/

本文从以下文章中得到启发和借鉴,在此表示感激:

http://blog.csdn.net/layallan/article/details/78328943

http://lib.csdn.net/article/opencv/28889

http://blog.csdn.net/autoliuweijie/article/details/52826645

https://www.jianshu.com/p/67293b547261

https://www.cnblogs.com/liutianchen/p/6089878.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值