树莓派3b编译安装完整OpenCV4 for Python3

作者: Litthins
上传时间为: 2018-12-20 10:48 AM
2018-12-20
阅读:

听说OpenCV更新到4.0版本了?那之前3.4.1版本的经验岂不是落后了?紧跟时代的步伐,赶快来试一下。本文是我在《树莓派3b编译安装完整OpenCV-3.4.1 for Python3》基础上的更新,有不清楚的可以看我3.4.1完整版教程。所需材料:树莓派3b、OpenCV4源码包(opencv-4.0.0.zip+opencv_contrib-4.0.0.zip)。

首先是更新系统啦这里使用最新官方镜像文件“2018-11-13-raspbian-stretch-full.img”,

sudo apt update && sudo apt upgrade

这里之前已经更新过了,所以没有提示新的更新。之后去官网下载最新的源码包,解压,备用。

推荐创建一个新的Python3虚拟环境,方法有很多,我使用的是pyvenv命令。由于本次编译安装使用了额外的opencv_contrib-4.0.0部分,编译的时候1GB内存+100MB SWAP交换文件不够用,建议手动调整SWAP大小至少1GB。不太清楚以上两个操作的朋友可以去爱板论坛Raspberry Pi主题区看我的另一篇文章《树莓派搭建基于Python3和OpenCV实现的解魔方机器人》

之后就是安装一些依赖,命令如下:

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

pip3 install numpy
然后我们安装cmake的图形化界面来完成编译前的配置工作,注意如果使用虚拟环境,这里要先进入虚拟环境,然后在终端中执行以下代码,
sudo apt install cmake-qt-gui
cmake-gui
接着配置cmake,导入源代码路径,创建并导入build目录路径,并搜索"OPENCV_EXTRA_MODULES_PATH"补充拓展模块路径,选择好额外模块路径后点击Config,有部分文件会自动下载,会需要一些时间,部分文件名如下,
xfeatures2d/boostdesc: Download: boostdesc_bgm.i
xfeatures2d/boostdesc: Download: boostdesc_bgm_bi.i
xfeatures2d/boostdesc: Download: boostdesc_bgm_hd.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_064.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_128.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_256.i
xfeatures2d/boostdesc: Download: boostdesc_lbgm.i
xfeatures2d/vgg: Download: vgg_generated_48.i
xfeatures2d/vgg: Download: vgg_generated_64.i
xfeatures2d/vgg: Download: vgg_generated_80.i
xfeatures2d/vgg: Download: vgg_generated_120.i
data: Download: face_landmark_model.dat

第一次Configure参考下图:

接着配置和Python3相关的一些参数,第二次Configure参考下图,重点检查选中项:

然后点击Generate,进到之前创建好的build目录下,使用make -j4命令编译,整个过程大概两个半小时的样子。

之后使用以下命令来安装:

sudo make install
sudo ldconfig
最后需要解决编译后的库文件cv2.so被输出为cv2.cpython-35m-arm-linux-gnueabihf.so导致该模块在Python3中无法import进来的问题,以下三行代码解决问题:
cd /usr/local/python/cv2/python-3.5/
sudo cp cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
ln -s /usr/local/python/cv2/python-3.5/cv2.so cv2.so
尝试在Python3中导入OpenCV4,成功!

然后就是激动人心的时刻啦,我们尝试写一个OpenCV4的Python3小程序吧!

import cv2

print('OpenCV Version:',cv2.__version__)

img = cv2.imread('./Test.jpg')
cv2.imshow('Test.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

大功告成!喝杯咖啡,我们下次再见吧!

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

创建讨论帖子

登录 后参与评论
系统提示