用树莓派4b构建深度学习应用(三)OpenCV篇

​前言

上回我们把大部分系统相关的软件都安装好了,这一篇主要介绍一下最新版的 OpenCV 4.4 在树莓派上的编译,安装与使用。

image
image

OpenCV 4.4 新特性让我们先看一下 OpenCV 4.4 的新特性:i. 支持 YOLO v4;i. SIFT 专利到期,移入到了主存储库;i. ONNX:添加对 Resnet_backbone (Torchvision)的支持;i. 支持 EfficientDet 模型;

i. 基于C++和python的文本识别样例

i. FlowNet2 光流;

i. 增加了对 **OpenVINO 2020.3 LTS / 2020.4 **版本的支持;

上面哪一条都值得咽一下口水,可惜树莓派上还没有直接可安装的包,我们只能从源码编译一个版本出来。

image

OpenCV 安装编译基础库首先安装一些编译需要的依赖库:

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

✎ Tip

需要安装的依赖包比较多,下载老是断线的话,可以挂VPN加速。

安装 Python 虚拟环境树莓派的官方镜像里自带了 python 2.7.16 和 python 3.7.3 两个版本,为了隔离各个环境的包冲突,明确所需的 python 版本。我们先安装一个虚拟环境管理包,这特别对于后续 Tensorflow 和 Pytorch 的环境依赖也会有很好的支持。

sudo pip3 install -U virtualenv

✎ Tip

在编译 OpenCV 之前,****务必保证已经安装 numpy 包****,不然编译出的不支持 numpy 操作。

****编译安装 FFmpegFFmpeg 是一个音视频处理最常用的开源开发包,它功能强大,用途广泛,大量用于视频网站和商业软件,也是许多音频和视频格式的标准编码/解码实现。

sudo apt-get install yasm

选择 ffmpeg 4.3.1 的版本编译安装:

wget http://ffmpeg.org/releases/ffmpeg-4.3.1.tar.gz

再完成一下ldconfig的配置

# 如果权限不足,申请一下 root 权限( sudo su )

最后在命令行中输入ffmpeg,查看是否有输出,有输出则为成功

ffmpeg -version
image

✎ Tip

这里有个巨坑,一定要在编译 OpenCV 之前先安装 FFmpeg****,并在编译参数里指定 WITH_FFMPEG=ON,这样编译出的 OpenCV 才能使用 ffmpeg 解码视频流。

我第一次先编译了 OpenCV,待到用到视频解码时才发现问题,只能卸载了重新又编译了一次... 每次 3 个小时

image

****编译安装 OpenCV 4.4.0先从 https://github.com/opencv 下载两个源码包,并用上一篇介绍的 WinSCP 上传到树莓派的 Downloads 目录下:

opencv-4.4.0.zip

解压文件

cd ~/Downloads/

修改目录名

mv opencv-4.4.0 opencv

进入opencv目录,创建 build 文件夹,指定编译参数,其中 OPENCV_EXTRA_MODULES_PATH 指向 contrib 源码处,WITH_FFMPEG=ON 开启FFmpeg 的支持。

cd opencv

耐心等待两个小时,注意散热,若输出如下内容,表示成功:


image

安装编译好的 OpenCV:

sudo make install

当上述编译成功后,会在 CMAKE_INSTALL_PREFIX=/usr/local 路径下,

lib/python3.7/site-packages/cv2/python3.7 中生成 cv2.cpython-37m-arm-linux-gnueabihf.so 文件。必须要有这个文件才算编译成功,然后需要在虚拟环境的 lib/python3.7/site-packages 链接上这个文件:

cd ~/my_envs/opencv/lib/python3.7/site-packages
image

在虚拟环境下测试一下,检测是否成功:

$ python
image

完美!✎ Tip

如果直接在系统 Python3.7 下安装的 OpenCV,则可以省去建立软链接的步骤。

最后配置一下 opencv.pc 文件

cd /usr/local/lib

然后在opencv.pc中添加以下信息,注意这些信息需要与自己安装opencv时的库路径对应:

prefix=/usr/local

保存退出,然后将文件导入到环境变量:

export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

至此就配置好opencv.pc啦~

再执行 pkg-config --cflags --libs opencv 时输出结果如下:

image

本期相关文件资料,可在公众号后台回复:“rpi03”,获取下载链接。

下一篇

我们将编译 PyTorch 1.6 和 PyTorch 1.7,

并在上面跑一下 yolo v5,

敬请期待...

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342