最近導師需要在平臺上實現一些視頻識別和圖像處理相關的應用,所以開始看這方面資料,找到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