[X]关闭

基于MZ7XB实现linux下人脸识别设计的学习过程(持续更新中)

文档创建者:tuvia
浏览次数:7983
最后更新:2019-01-02
悬赏1积分未解决
本帖最后由 tuvia 于 2018-8-24 16:36 编辑

大家都喜欢直白点的,那我就简单点来说。
研三毕设,想做一个关于人脸检测与跟踪设计。在网上找了好久的资料,找到一篇文章(图片上传玩的不溜,大家凑活看)名叫基于zedboard平台人脸跟踪系统的设计与实现。

文章内容基本上讲述了设计的结构:主要是调用opencv库实现算法,在linux下进行交叉编译(请记住这个交叉编译,很重要也很蛋疼)下载到板子上。说起来很简单,做起来是相当的难啊。
发这个贴子就是想和大家进行交流,还有就是将我的方法分享出来供大家参考。如果有什么写的不当的地方,还请大家多多交流。
正题:
首先,我先在VS上实现OpenCV的人脸识别,又顺势加上了一个人眼测距的函数(很简单)检测人眼间距,做这个主要是为了通过这个值判断人和摄像头的位置,进行摄像头的移动(这是设计的主要功能)。做完windows再说说linux,我先分享一下我在linux上搭建OpenCV平台的方法:
平台:ubuntu 16.04(osrc提供的现成虚拟机)
OpenCV库版本 2.3.1&3.4.1(由于有朋友说2.3.1比较老我就又做了个新的)

2.3.1的:
1、安装第三方库
官网下载OpenCV-2.3.1库并安装
网址:
安装:
apt-getinstall build-essential
apt-getinstall cmake cmake-gui
apt-getinstall libgtk2.0-dev
apt-getinstall libavcodec-dev libavformat-devlibswscale-dev
apt-getinstall libdc1394-22-dev
apt-getinstall libjpeg-dev libpng-devlibtiff-dev libjasper-dev
2、新建文件夹
将OpenCV解压到自建目录/home/linux/OpenCV-2.3.1下,新建目标build。这是个临时文件夹,安装完成后可以删除。进入build目录。进行命令配置:
mkdirbuild
cdbuild
cmake–D  CMAKE_BUILD_TYPE=RELEASE –DCMAKE_INSTALL_PREFIX=/usr/local../
PREFIX为安装路径
在这里设置了安装目录为/usr/local(其实也是默认的安装路径,当然可以修改为自定义路径),命令完成后build目录下多了一些文件,可以通过ls命令进行查看。
3、opencv安装配置
执行ccmake ./进行OpenCV配置,把WITH_1394WITH_CUDAWITH_FFMPEG设置为OFF,其他不变;
按c键进行配置,g键产生Makefile
4、进行编译和安装
这个过程时间比较长,make比较占时间。
make
makeinstall
安装结束后可以在/usr/local/lib目录下看到OpenCV的链接库。
注:若在make的过程中出现cpp文件错误再根据错误进行修改就好了,一般都是c++语法。
5、配置系统环境变量
vi /etc/ld.so.conf.d/opencv.conf
添加/usr/local/lib,保存并退出,进行配置:
sudo ldconfig
打开并修改bash.bashrc文件:
vi /etc/bash.bashrc
在末尾添加如下两行:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存并重启终端。
6. 测试OpenCV的效果
进入OpenCV的解压目录,找到samples文件夹,运行其中的C程序样例进行测试
cd /home/linux/OpenCV-2.3.1/samples/c
chmod +x build_all.sh
./build_all.sh
./facedetect lena.jpg(又是那个裸女,刺不刺激,惊不惊喜)

下面来3.4.1的:

Ubuntu 16.04 + OpenCV 3.4.0(3.4.1亲测可用)


第一步:到opencv的官方网站上下载安装包并且解压。

(这里笔者要和大家聊聊关于版本的问题。OpenCV 2.0+版本中仍保留了现在opencv3.0+的nonfree库中的许多函数。笔者这里仍以最新版本的opencv作为配置范例。OpenCV在Github上有源码,我们这里选择源码安装)

opencv-3.4.0.tar



第二步:build-essential 软件包,会下载依赖的软件包,安装gcc/g++/gdb/make 等基本编程工具,组成开发环境。还有辅助依赖项,Ubuntu下可直接打开terminal输入如下四条命令:

sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-devpkg-configlibavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpylibtbb2libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-devlibdc1394-22-dev

sudo apt-get install pkg-config

至此,安装opencv之前的准备工作,我们已经全部就绪。


第三步:opencv的安装和编译

笔者在这里推荐采用cMake安装方式进行安装。

我们将路径cd到有CMakeLists.txt这个文件夹下。我们可以在下载并解压后的opencv包中找到这一文件,图形界面下双击opencv解压后文件夹,就能看到该文件了,我们就cd到这个路径即可。terminal中输入:

Cmake

就能很快找到该文件,当然网上一些教程中写到在这一步配置参数,笔者建议也如此可以更方便。在terminal中输入:

cd opencv-2.4.9

mkdir release

cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE-DCMAKE_INSTALL_PREFIX=/usr/local ..

即可完成该步骤。
cMake安装启动!!terminal中输入如下命令:

make

make install

恩,安装开始!会看到屏幕出现一大堆文字巴拉巴拉巴拉……


到最后,显示安装成功!可惜此时还不能用。装过windows下的opencv的朋友们可能知道配置是最麻烦的。但是linux下难度就小了很多。

首先,terminal中敲入如下命令:

gedit /etc/ld.so.conf

在弹出的窗口中复制如下一段文字:

/usr/local/lib

然后使得配置生效:

sudo ldconfig

然后再terminal中写入:

sudo gedit /etc/bash.bashrc

之后我们在弹出的窗口中添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

到此,安装和配置任务完成!此时我们可以欢快地敲代码了。又是熟悉的配方,又是熟悉的味道,我们的opencv老大又回来啦!


第四步:运行与测试

opencv在linux中可以直接被g++编译,因为我们都装好了。

那么这时候你可能在好多教程中都看到他们会让你费了半天劲找什么samples/c什么build之类的shell脚本。而实际上,可能是因为笔者笨并没有找到什么之类的脚本。所以我们直接用samples里的c++文件进行测试即可。我们知道这个samples中有好多代码不能直接running而是需要添加参数或者路径之类的,修改代码有一个很快的办法,ubuntu中提供给大家gedit这个东西,很是方便,我们可以直接用cd到代码文件中,然后在terminal输入gedit xxx.cpp,就可以进行修改了。

笔者这里可以告诉大家samples中有几个文件可以不用修改直接跑。像camshiftdemo.cpp ,edge.cpp之类都可以,随便跑一个吧,笔者这里调用了edge.cpp文件。那么如何调用呢?下面请牢记这条命令:

g++ `pkg-config --cflags opencv` -o testfacedetect.cpp`pkg-config --libs opencv`

那么输入完之后你的代码就可以运行了!!我们可以看到是个canny检测。




发表评论已发布 5

tuvia

发表于 2018-8-24 15:45:26 | 显示全部楼层

最近由于遇见了交叉编译版本的问题,很是头疼,想了几个方法都没法实现,目前在考虑之家在MZ7XB上跑程序,正在做,做好了再上干货,未完待续。。。
回复

使用道具 举报

接口小白

发表于 2018-8-24 16:17:27 | 显示全部楼层

哈哈,厉害厉害
回复

使用道具 举报

红冰铁衣

发表于 2018-9-17 11:36:07 | 显示全部楼层

厉害,不过貌似没有用到FPGA部分吧,用ARM做图像处理效率应该不怎么样吧
回复

使用道具 举报

842709698

发表于 2018-11-7 11:01:51 | 显示全部楼层

楼主,你很厉害,我现在想在zynq7035上的ps端跑opencv,我怎么搭建工程呢

回复

使用道具 举报

tuvia

发表于 2019-1-2 14:17:53 | 显示全部楼层

842709698 发表于 2018-11-7 11:01
楼主,你很厉害,我现在想在zynq7035上的ps端跑opencv,我怎么搭建工程呢

方法一样,需要修改的不多,不针对某个型号,只是内部的一些变量或者工具需要修改
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则