javaCV+openCV+FFmpeg实现视频帧转为图像并进行人脸识别(一)

    项目需要做一个预研,基于hadoop map/Reduce实现大量视频数据的处理,将视频流中的图像进行人脸识别并输出。对于map/Reduce这个专题不在此做叙述,如有需求,在后期进行补充。
    本篇主要是说明如何基于javaCV+openCV+FFmpeg环境,实现视频帧转为图像并进行人脸识别的过程。同时对视频图像提取和识别封装了两个util以供使用。

Linux环境下的hadoop、ffmpeg、openCV的环境配置说明、以及本例的实现思路讲解内容请参见附件:Linux下MapReduce__FaceRecog环境配置说明.xlsx。

以下是windows下开发环境搭建的说明。

一、javacv opencv环境搭建
    JavaCV 提供了在计算机视觉领域的封装库,包括:OpenCV、ARToolKitPlus、libdc1394 2.x 、PGR FlyCapture和FFmpeg。所以利用该工具可以很容易地实现视频捕获、截图、转换分割、特征识别等功能。JavaCV实际上是使用JNI方式调用openCV、FFmpeg等库,因此配置javaCV环境时还需要同时安装依赖库的环境。
    由其要注意的是JavaCV和openCV的版本是需要匹配的对应的,网上介绍较多的是JavaCV06 + opencv246,我这里使用的是JavaCV07 + opencv248,本质上没有什么区别。但JavaCV08以后的包结构都发生的变化,配置似乎又不一样。为避免不必要的麻烦,由其是相关的文档非常少,推荐大家不要使用JavaCV08以后的版本。
●opencv + javacv
1. 下载opencv-2.4.8.exe
http://opencv.org/downloads.html
2. 双击opencv.x.x.exe安装,其实就是解压过程(注意:一定要把它解压到C盘根目录下)
3. 设置环境变量添加path:
C:\opencv\build\x86\vc10\bin;C:\opencv\build\java\x86;
(第一个是为了vs2010设置的,第二个是为了eclipse设置的)

5.然后开始配置eclipse的javacv:
a)下载javacv-0.7-bin.zip
javacv的开源社区中似乎没找到这个版本,可以在CSDN这里下载。

b)在eclipse下新建一个Java Project:TestJavacv(名字随便取)

c)在TestJavacv下面新建文件目录libs/armeabi,建好之后,文件目录如下图所示

d)将javacv-0.7-bin.zip解压后得到的所有的jar文件拷贝到libs文件的根目录下,并添加到build path中。注意:不是armeabi目录。

e) 刚刚javacv-0.7-bin.zip解压后得到的目录里面会有javacv-android-arm.jar这个文件,解压,把它们里面所有*.so文件直接拷贝到刚创建的“libs/armeabi”文件夹中。

f)接着,再下载javacv-0.7-cppjars.zip,解压,解压目录里面有opencv-2.4.6.1-android-arm.jar文件,以及ffmpeg-2.0.1-android-arm.jar。再把这2个jar解压,把它们里面所有*.so文件直接拷贝到刚创建的“libs/armeabi”文件夹中。

g)在配置build path的设置中,把native环境配置一下,指定到JNI的opencv的Native库目录即C:\opencv\build\java\x86。

h)到至javacv+openCV就配置好了
测试代码如下(先在配置文件中配置vedio目录和简单参数,大家一看即明)

●FFmpeg
FFmpeg在windows下的安装非常简单,下载、解压之下,将FFmpeg的bin目录添加到Path系统变量就行了。可以参照下面的地址运行一些测试命令,试试FFmpeg的强大功能吧。
http://hwei199.iteye.com/admin/blogs/2277892
掌握了FFmpeg命令的用法,以后什么视频、音频的组合、切割就不需要到处找工具了,安装省心效率高。

猜你喜欢

转载自hwei199.iteye.com/blog/2270179