徐珂靖 · 2020年09月09日

云芯一号测评3:安装OpenCV4.2

测试背景简介

极术社区的小伙伴们大家好,我叫徐珂靖,是一个骨灰级工科男,很荣幸地成为本期试用活动的第一批用户。

今天的工作是一个小小的插曲,不小心又写了个《一天精通OpenCV安装和卸载》,但是对于云芯一号的默认固件,这个教程还是有必要的,所以发出来给大家看,也帮助大家少走点弯路。

云芯一号的默认固件里并没有OpenCV开发环境。在上一篇文章里,《实时捕获并存储网络IP摄像头图像》中,本人用apt安装了OpenCV,版本是3.2。按理说3.2已经集成DNN模块了,但是实际编程使用发现并没有,这对后续测试物体检测会带来一些不方便。我直接抓重点汇报吧,简短说就是翻车了。

当然,这个问题并不大,我也知道你们都想看云芯一号跑AI目标检测算法,dnn模块是必须有的,所以今天一定要把确定已经带了dnn模块的OpenCV4.2给装上。

问题的解决思路

遇到这种需求,我们这种老司机的方案A一般就是自己源码编译OpenCV的,先用git下载源码

git clone https://github.com/opencv/opencv.git

git clone https://github.com/opencv/opencv_contrib.git

接着就是建build文件夹,进去cmake再make然后make install,这就完事了。

根据我过去编译的经验,半天时间就能编译完了。我觉得这个任务很简单,make开始以后,就去干别的了。

然后,晚上回来瞅了一眼,发现OpenCV还没编译完,且用来存编译文件的U盘还被占满了。这条路看来是不太好走。

FriendlyARM(友善之臂)的代码小哥跟我说他做了个Friendly RK3399系列开发板一键安装OpenCV的脚本,地址https://github.com/friendlyarm/install-opencv-on-friendlycore。只是,这个安装脚本不能直接用在其他厂家上。主要是系统环境变量的问题,会导致报错。

但这已经是帮了我大忙了,真是雪中送炭啊。于是,我悲喜交加地启用了方案B,也就是白嫖别人编译好的链接库。

安装方法/步骤

首先,致敬一下FriendlyARM做的编译工作。如果自己编译的话,至少需要花费半天时间,占用30GB的硬盘空间。

我已经把今天的安装过程中用到的命令和代码整理并开源在gitee上,方便大家复制黏贴,地址:https://gitee.com/xukejing/aijishu/tree/master/install-opencv-on-yunxin1

注意:做这些前,如果您用apt安装过OpenCV3.2,记得先删掉

1、安装curl用于下载安装包,安装libQT5,再次感谢FriendlyARM提供的那么好的编译环境
apt-get -y install curl
apt-get install qt5-default
2、找个方便的目录用来存安装包,这句的目录随意
cd ~
3、下载安装包,再次感谢FriendlyARM,这句命令其实是由它们的一键安装脚本修改而来。
curl -o OpenCV4.2.sh http://112.124.9.243/opencv/OpenCV-4.2.0-For-FriendlyELEC-RK3399.sh
这个包里面主要是编译完的二进制可执行文件、链接库和头文件,所以文件包与OpenCV源码包相比已经缩小很多了,所以很快就能下载完毕:
下载OpenCV安装包.JPG
4、安装包赋予执行权限
chmod 755 OpenCV4.2.sh
5、激动人心的安装
./OpenCV4.2.sh --skip-license --prefix=/usr/local
6、把我提供的opencv4.pc文件放到/lib/pkgconfig,这个文件在gitee里提供了。这个文件是我写的,应该不会有错。放心用吧,里面只是写入了编译时候需要的头文件和库文件的路径,以及需要链接的库,没有病毒的。
7、测试一下pkgconfig,观察一下include和lib是否都有了
pkg-config --cflags --libs opencv4

正常情况下,应该会正确输出-I和-L参数
pkgconfig.JPG

例子编译测试

查看一下OpenCV版本,命令:

opencv_version

输出如下
检查版本.JPG

接下来,可以把我在gitee里提供的测试代码mycvtest.cpp编译并运行一下试试。这个代码很眼熟对不对?没错,它就是上一篇里的测试代码。它测试了网络rtsp视频流的捕获,其中mycvtest.cpp文件里面给出了摄像头ip、用户名、密码、端口的设置方法
g++ -ggdb mycvtest.cpp -o aaaaa pkg-config --cflags --libs opencv4
./aaaaa

注意pkg-config --cflags --libs opencv4要用`符号括起来

下面是运行的截图,libEGL有警告,但不影响使用,至此就没问题了
测试cv程序.JPG

虽然有警告,但是实际libEGL库是存在的,命令

ls /usr/lib/aarch64-linux-gnu | grep -i libegl
输出如下
libEGL存在.JPG

小结

安装完OpenCV4.2,后续工作又能继续开展了。

云芯一号相关测评贴

更多云芯一号的技术教程及评测报告请关注Arm微服务器专栏
推荐阅读
关注数
4271
内容数
71
低成本Arm微服务器开发平台“云芯1号”教程及应用,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息