最近导师需要在平台上实现一些视频识别和图像处理相关的应用,所以开始看这方面资料,找到OpenCV(Intel建立的开源计算机视觉库:实现了图像处理和计算机视觉方面的很多通用算法,同时提供了Python、Ruby、MATLAB等语言的接口),之后找到JavaCV(提供对OpenCV在内的许多函数库封装)。
首先熟悉下JavaCV并安装其环境。
JavaCV http://code.google.com/p/javacv/
顺手翻译了下JavaCV介绍:
JavaCV首先提供了计算机视觉领域开发者所常用的函数库的封装(包括OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, videoInput,and ARToolKitPlus)。
下列这些类各自在com.googlecode.javacv.cpp包命名空间中,并暴露其完整的接口:opencv_core, opencv_imgproc, opencv_video, opencv_flann,opencv_features2d, opencv_calib3d, opencv_objdetect, opencv_highgui,opencv_legacy, opencv_ml, opencv_contrib, avutil, avcodec, avformat, avdevice,avfilter, postproc, swscale, dc1394, PGRFlyCapture, freenect, videoInputLib,and ARToolKitPlus。
此外,utility类易于在包括android在内的Java平台上调用它们的功能。
另外JavaCV还带有硬件加速的全屏幕图像显示(CanvasFrame and GLCanvasFrame),易于在多个内核中执行并行代码(并行),易于使用的相机、投影仪的几何及色彩校准(GeometricCalibrator, ProCamGeometricCalibrator,ProCamColorCalibrator),特征点的检测和匹配(ObjectFinder),实现相机投影仪系统直接图像校准(主要GNImageAligner, ProjectiveTransformer, ProjectiveColorTransformer,ProCamTransformer, and ReflectanceInitializer),以及JavaCV类中的其它功能。这种类的一部分同样有OpenCL和 OpenGL副本,它们的命名以CL结尾,就如JavaCVCL等等。(除了GLCanvasFrame)
现今缺乏学习如何使用这些接口的文档,可以参照网站(http://code.google.com/p/javacv/)
介绍下文中Quick Start forOpenCV and FFmpeg章节和在示例指导中展示的示例程序,其中有一个android的。也可以参考ProCamCalib和ProCamTracker代码中的有用部分。
所需软件
为了使用JavaCV,需要下载和安装以下软件:
1、 安装一种Java SE 6 或 7;
OpenJDKhttp://openjdk.java.net/install/ or
Sun JDKhttp://www.oracle.com/technetwork/java/javase/downloads/ or
IBM JDKhttp://www.ibm.com/developerworks/java/jdk/ or
Java SEfor Mac OS X http://developer.apple.com/java/ etc.
2、 OpenCV 2.3.1 http://sourceforge.net/projects/opencvlibrary/files/
Precompiledfor Android 2.2 http://code.google.com/p/javacv/downloads/list
确保安装的Java和OpenCV是同样版本(32位或64位),不要在任何情况下混合。
另外,虽然并不是总需要,但JavaCV中的一些功能依赖于:
FFmpeg0.6.x or 0.7.x http://ffmpeg.org/download.html
Precompiledfor Windows http://ffmpeg.zeranoe.com/builds/ Known compatible builds:
http://ffmpeg.zeranoe.com/builds/win32/shared/ffmpeg-0.7.1-win32-shared.7z
http://ffmpeg.zeranoe.com/builds/win64/shared/ffmpeg-0.7.1-win64-shared.7z
Precompiledfor Android 2.2 http://code.google.com/p/javacv/downloads/list
libdc13942.1.x (Linux and Mac OS X) http://sourceforge.net/projects/libdc1394/files/
PGRFlyCapture 1.7~2.2 (Windows only) http://www.ptgrey.com/products/pgrflycapture/
OpenKinecthttp://openkinect.org/
CL EyePlatform SDK (Windows only) http://codelaboratories.com/downloads/
AndroidSDK API 8 or newer http://developer.android.com/sdk/
JOCL andJOGL from JogAmp http://jogamp.org/
修改源代码时请注意工程文件是由以下创建:
NetBeans6.9 http://netbeans.org/downloads/
JavaCPPhttp://code.google.com/p/javacpp/
ARToolKitPlus2.1.1t http://code.google.com/p/javacv/downloads/list
JavaCV讨论组:http://groups.google.com/group/javacv
下面是安装过程:eclipse+JavaCV+Win7(32位)
1、 首先安装JDK。(电脑上有就跳过了)
2、 安装Microsoft Visual C++ 2010的运行组件:(同上一条,有就跳过)
32位:http://www.microsoft.com/download/en/details.aspx?id=5555
64位:http://www.microsoft.com/download/en/details.aspx?id=14632
3、 安装OpenCV :
OpenCV-2.3.1-win-superpack.exe(131.1 MB)
http://sourceforge.net/projects/opencvlibrary/files/latest/download?source=files
解压于C盘根目录。
设置系统变量PATH(C:\opencv\build\x86\vc10\bin)。看到也有文章把此文件夹下的dll文件都复制到C盘windows\system32中。
4、 javacv-bin-20120218.zip 7.6 MB
http://code.google.com/p/javacv/downloads/detail?name=javacv-bin-20120218.zip
解压JavaCV,把Javacv-bin中需要的jar包留下:
例如我只是在win7 32位下做java:
就留以下3个jar包:
javacpp.jar
javacv.jar
javacv-windows-x86.jar
之后在eclipse中新建Java项目,在项目属性-编译路径中加入上述3个jar包就可以了。
可以自己尝试javaCV附带的samplecode。
另外:csdn上也有两篇相关的的文章,作者是ljsspace,同时学习了下,对里面的示例代码也尝试了下。
ljsspace的两篇文章地址
http://blog.csdn.net/ljsspace/article/details/6664011
http://blog.csdn.net/ljsspace/article/details/6702178