树莓派3b编译安装完整OpenCV-3.4.1 for Python3

作者: Litthins
上传时间为: 2018-07-02 10:30 AM
2018-07-02
阅读:

没错,就是我,一周没见,我又回来了~

本次为大家带来的绝对是干货,树莓派3b编译安装OpenCV-3.4.1+OpenCV_Contrib-3.4.1!

本文主要参考pyimagesearch上Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3这篇文章,英文原版链接在文中。由于该文章年代较早,直接照搬容易遇到一些困扰,本文考虑提供一种更加简单的安装步骤,并解决安装途中可能遇到的问题。

从头开始的手把手带大家编译安装OpenCV3.4.1哦,包过包教会。要开车了,还没上车的赶紧上车!

一、Python3虚拟环境和swap分区的配置

需要注意的是我们需要扩大swap分区,因为树莓派默认的1GB RAM + 100MB SWAP不够用!

具体细节请参考我在爱板论坛的另一篇帖子:树莓派搭建基于Python3和OpenCV实现的解魔方机器人

二、OpenCV-3.4.1和OpenCV_Contrib-3.4.1源文件下载

这里大家可以去官网下载,直接分享下载链接:

https://github.com/opencv/opencv/archive/3.4.1.zip

https://github.com/opencv/opencv_contrib/archive/3...

推荐使用wget下载或者VNC直传,下载完毕后,建立一个文件夹,将两个压缩包解压放里面,放个图:

三、相关依赖的安装

这里我们直接参考这篇英文文章:Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3

由于该文章是16年的,现在照搬会遇到一些问题,使用难度较大,我们参考具有指导意义的一部分来做,这一块就是依赖的安装,主要包括图像和视频IO,如果想更深入了解,建议参考原文。我把这一步需要用到的命令放到下面了,方便大家使用:

sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python2.7-dev python3-dev

然后我们进入虚拟环境,使用类似下面这条命令:

source MyProjects/venv/bin/activate

注意进入虚拟环境后,提示符前会有小括号,如图:

然后我们安装numpy,大家都懂的:

pip3 install numpy

四、OpenCV-3.4.1的编译安装

因为这里要用到CMake,考虑到可能有读者没有接触过,这里我们使用图形界面,安装cmake-qt-gui:

sudo apt-get install cmake-qt-gui

首先进到opencv-3.4.1的目录下,新建build文件夹,然后在终端激活python虚拟环境的条件下,打开CMake:

(venv) pi@raspberrypi:~/Downloads/opencv/opencv-3.4.1 $ cmake-gui

选择源文件路径,编译文件夹选择刚才新建的build文件夹,

点击左下角Configure,第一次完成是红色的,再点一次就变成白色了,如图:

然后我们查找OPENCV_EXTRA_MODULES_PATH项,将OpenCV_Contrib-3.4.1的路径填进去,点击Configure,如图:

这样OpenCV_Contrib-3.4.1就被添加进去了,然后我们修改关于Python的参数,在查找栏键入PYTHON:取消BIULD_opencv_python2,勾选INSTALL_PYTHON_EXMAPLES,这样就设置为编译Python3的版本了,再次点击Configure,如图:

然后就可以生成编译文件了,点击Generate!

然后退出CMake,进入build文件夹下,此处再次确认,swap分区修改为至少1.5GB,python3的虚拟环境已经激活!

键入下述命令开始编译:

make -j4

建议开一个htop监视系统情况,如图:

编译时间稍长,可以干点别的事情~

这样就算是安装完成了,用时两个半小时,也是不容易啊,上图:

用如下命令来安装~

sudo make install
sudo ldconfig

最后一步,因编译后的库文件cv2.so被输出为cv2.cpython-35m-arm-linux-gnueabihf.so,这将导致该模块在Python3中无法import进来,

我们到该库文件的安装目录/usr/local/lib/python3.5/site-packages/下,将其重命名为cv2.so:

ls -l /usr/local/lib/python3.5/site-packages/
cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so<br>

再返回Python3的虚拟环境目录下在对应的文件夹内建立一个链接,像这样:

cd /home/pi/MyProjects/venv/lib/python3.5/site-packages
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so

这两步就解决了cv2模块无法导入的问题,详细情况建议参考英文原文,现在让我们尝试在Python3中导入模块并打印版本号:

import cv2
cv2.__version__

版本3.4.1!完美!但是运行起来效果如何呢?既然实践是检验真理的唯一标准,那我们就来检验下吧~

这里用到爱板官方微信的二维码,我们用OpenCV读取二维码图片文件,然后显示出来!Python代码如下:

import numpy as np
import cv2

img = cv2.imread('./eefocus.jpg')

cv2.imshow('eefocus.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

直接上图,有图有真相!

喝杯咖啡,今天就到这里吧!

作者:Litthins

日期:2018年7月1日

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示