By Toradex 秦海
1). 简介
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序,以解决人机交互,人脸识别以及动作跟踪等领域的问题。
本文所采用的测试平台为来自Toradex的ARM 计算机模块平台
Colibri iMX6DL搭配其对应的开发载板
Colibri
Eva Board.
2. 准备
a). Colibri iMX6DL系统通过载板X18连接LVDS LCD显示屏。
b). USB camera 用于后续OpenCV演示程序测试。
c). Colibri iMX6DL 系统使用Toradex Linux Release V2.6.1,不过原生没有包含OpenCV支持,可以通过下面两种方式集成OpenCV。
./ 在Colibri iMX6DL官方Linux release系统上面,通过opkg软件管理器在线安装
------------------------------
root@colibri-imx6# opkg update
root@colibri-imx6# opkg install opencv
root@colibri-imx6# opkg install opencv-apps
------------------------------
./ 基于Toradex Openembedded环境添加OpenCV相关并重新编译,好处可以更方便的定制所需安装的包,如添加ffmpeg/libav支持。建立环境和编译相关请参考
这里,涉及到添加OpenCV支持的修改请参考下面两个patch文件,然后根据这里
说明将重新编译好的image文件更新到Colibri
iMX6DL模块上面去。
------------------------------
//local.conf文件添加OpenCV支持
https://github.com/simonqin09/opencv_patch/blob/master/local.conf.opencv.patch
// 修改OpenCV recipte添加FFMPEG/libav和multicore(TBB)支持,不过请注意libav是商业授权,这里只作为测试使用,不能直接用于商业发布。
https://github.com/simonqin09/opencv_patch/blob/master/opencv_2.4.bb.patch
//修改OpenCV bitbake recipt添加gstreamer支持
https://github.com/simonqin09/opencv_patch/blob/master/opencv_2.4.bbappend.patch
// bitbake image
Toradex-ubuntu$ bitbake angstrom-lxde-image
//bitbake toolchain
Toradex-ubuntu$ bitbake -c populate_sdk angstrom-lxde-image
------------------------------
d). 在开发主机安装上面生成的toolchain,可以放到任意位置,本文为了后续操作方便,将安装好的SDK目录下的”sysroots”目录链接到”/home/username/sysroots”下面。
------------------------------
Toradex-ubuntu$ ./angstrom-glibc-x86_64-armv7at2hf-vfp-neon-v2015.12-toolchain.sh
Toradex-ubuntu$ ln –s SDK folder/sysroots /home/username/sysroots
------------------------------
3). OpenCV Demo演示
a). 本文使用的演示程序是修改于openCV 文档中的基于Haar Cascades 级联分类器的人脸识别demo,源代码如下
------------------------------
https://github.com/simonqin09/opencv/blob/master/facedetect.cpp
// 源代码中需要对应修改“haarcascade_frontalface_alt2.xml”文件在Colibri iMX6的放置路径,这里使用的是”/home/root”
// 源代码中需要对应修改USB 摄像头对应的设备名字,本文是”/dev/video0”, 在你的环境可以通过”v4l2-ctl –list-devices”命令来确定
------------------------------
b). 对应的Makefile如下,如果你的toolchain安装在不同目录,要对应修改sysroots目录路径
https://github.com/simonqin09/opencv/blob/master/Makefile
c). 将编译好的可执行文件以及下面地址的“haarcascade_frontalface_alt2.xml”文件都复制到Colibri iMX6DL同一目录下面,文本使用目录”/home/root”
d). 执行程序,当有人脸正面出现在摄像头内就会显示识别出的人脸数目
----------------------------
root@colibri-imx6# ./facedetect
----------------------------
4). 总结
本文基于NXP iMX6嵌入式平台测试了OpenCV的基本部署和运行,另外虽然OpenCV用C++编写,也支持很多其他语言的接口甚至使用CUDA的GPU接口。