基于Jetsontk1和OpenCV下的人脸检测
Abstract:This passage mainly describes how to use the cascadeclassifier.cppfile of OpenCV library for face detection on Jetson tk1.
Key words: Jetson tk1;OpenCV;Face detection
摘 要:本文主要描述的是如何在Jetson tk1 开发板上利用OpenCV自带的的人脸检测文件cascadeclassifier.cpp进行人脸检测。
关键词:Jetson tk1;OpenCV;人脸检测
1 总体设计方案
首先对Jetson tk1进行必要的初始化,然后在主机(PC机)下载opencv2.4.10库,将cascadeclassifier.cpp文件远程发送到jetson tk1,再下载libopencv4tegra库到jetson tk1,最后编译和运行cascadeclassifier。
2 安装OpenCV2.4.10
NVIDIA Jetson tk1提供两种OpenCV库,一种是标准的OpenCV官方的库,另一种是NVIDIA 提供的libopencv4tegra库。OpenCV官方库可到OpenCV官网(www.opencv.org)选择对应版本的OpenCV库,这里笔者选用的是linux的OpenCV2.4.10库。libopencv4tegra库是NVIDIA公司提供的CPU和GPU优化版的OpenCV,该库可到NVIDIA官网选择对应版本下载。在这里,笔者使用的是libopencv4tegra2.4.10库和opencv2.4.10库中的cascadeclassifier.cpp文件。
2.1 Jetson TK1简介及初始化
Jetson tk1 是由NVIDIA公司推出的一款嵌入式并行处理平台,包含 192 个 CUDA 核心的 NVIDIA Kepler GPU,CPU为NVIDIA 4-加-1 (4-Plus-1™) 四核 ARM® Cortex-A15 CPU,2GB的运行内存,16GB的eMMC存储空间,是arm_ubuntu架构,与我们经常看到的ubuntu_X86/X64有本质的区别。因此,在我们拿到Jetson tk1开发板时要进行必要的初始化。在我们刚拿到jetson tk1时,开机启动后只有命令行,如果我们需要图形界面,我们需要输入下列命令:
cd /home/ubuntu/NVIDIA-INSTALLER
sudo ./installer.sh
我们还要设置一下软件更新源,打开terminal输入下列命令:
sudo apt-add-repository universe
sudo apt-get update
还有的是Jetson tk1 自带的系统是不含 TAB补全命令,因此,输入下列命令:
sudo apt-get install bash-completioncommand-not-found
exit
2.2 下载OpenCV到jetson tk1
这里笔者下载的是OpenCV2.4.10window版本,将PC机作为主机,然后将OpenCV库中的samples目录下的gpu文件夹下的cascadeclassifier.cpp文件通过winscp软件将该文件远程发送到Jetson tk1目标机。当然,也可以直接将OpenCV库linux版直接下载到Jetson tk1,但这会占用比较大的空间。
2.3 下载libopencv4tegra到jetson tk1
首先到官网下载对应版本的libopencv4tegra_2.4.10到Jetson tk1,笔者的使用的Jetson tk1的ubuntu系统对应的是L4T 21,然后打来terimal输入下列命令:
sudo dpkg -ilibopencv4tegra-repo_l4t-r21_2.4.10.1_armhf.deb
sudo apt-get update
sudo apt-get install libopencv4tegralibopencv4tegra-dev
我们还要安装相关的库
#一些通用的库
sudo apt-get install build-essential make cmakecmake-curses-gui g++
#Libav视频输入/输出开发库
sudo apt-get install libavformat-devlibavutil-dev libswscale-dev
# Video4Linux 摄像头开发库
sudo apt-get install libv4l-dev
# Eigen3 数学开发库
sudo apt-get install libeigen3-dev
# OpenGL开发库 (允许创建图形窗口)
sudo apt-get install libglew1.6-dev
# GTK 开发库(允许创建图形窗口)
sudo apt-get install libgtk2.0-dev
下载后的libopencv4tegra库,其实就是/usr/include/opencv和/usr/include/opencv2两个文件夹,因此我们需要添加一些链接库,运行命令:
vi ~/..bashrc
在文件内容最后的LD_LIBRARY_PATH添加文件需要用到的OpenCV动态库:
最后更新该文件,使其生效:
source ~/.bashrc
3 人脸检测
3.1 编译cascadeclassifier.cpp
因为要到LBP对象的人脸检测器,因此我们需要将在主机下载好的opencv2.4.10库中data文件夹下的lbpcascade_frontalface.xml文件通过winscp远程发送到jetson tk1。
打开terminal,首先安装g++编译器:
sudo apt-get install build-essential g++
然后进入cascadeclassifier.cpp文件所在的目录下:(这里的文件目录是/disk7/study):
cd /disk7/study
编译cascadeclassifier.cpp:
g++ cascadeclassifier.cpp -lopencv_core-lopencv_imgproc -lopencv_highgui -lopencv_calib3d -lopencv_contrib -lopencv_features2d-lopencv_flann -lopencv_gpu -lopencv_legacy -lopencv_ml -lopencv_objdetect-lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_video-lopencv_videostab -o cascadeclassifier
运行编译生成的目标文件cascadeclassifier:
./cascadeclassifier--cascade /disk7/study/ lbpcascade_frontalface.xml --camera 0
运行过程和结果:
4 结束语
从运行结果可以看出是FPS平均7fps,还没有达到实时人脸检测效果,因此,今后要做的是运用并行编程,将cuda与OpenCV有效地结合起来,实现实时的人脸检测。
参考文献:
[1] http://elinux.org/Jetson/Installing_OpenCV
[2] http://blog.csdn.net/hysteric314/article/details/49805573