javaCV 的簡介 - 資料來源 (翻成繁中)
JavaCV是對各種常用電腦視覺函式庫的封裝後的一組JAR包,其中封裝了OpenCV、
libdc1394、OpenKinect、videoInput和ARToolKitPlus等電腦視覺程式設計人員常用函式
庫的接口,可以通過其中的utility類方便的在包括Android在內的Java平台上調用這些接口。
另外JavaCV還帶有硬件加速的全螢幕圖像顯示(CanvasFrame),易於在多核心中執行
並行代碼,用戶友好的幾何和色彩的相機和投影儀校准(GeometricCalibrator,
ProCamGeometricCalibrator,ProCamColorCalibrator ),檢測和特徵點
(ObjectFinder),一類是實現投影,攝像系統(直接圖像對齊設置匹配主要
GNImageAligner,ProjectiveTransformer,ProjectiveGainBiasTransformer,
ProCamTransformer和ReflectanceInitializer),以及在JavaCV類雜項功能。
JavaCV安裝
https://github.com/bytedeco/javacv
到這裡下載avaCV 0.10 binary archive javacv-0.10-bin.zip (136 MB)
網頁中有教各種IDE的使用方法,小弟我使用Netbeans 嘗試了Smooth範例,確認是可以執
行的。為了方便筆記Demo ,自己有小修改了一下。
裝JavaCV(0.10版本)之前,不必先安裝OpenCV 。
範例圖片在這裡
http://www.cs.cmu.edu/~chuck/lennapg/lena_std.tif
這個範例只需要引入一個openCV.jar 即可
程式碼如下
package javacv; import org.bytedeco.javacpp.opencv_core.IplImage; import static org.bytedeco.javacpp.opencv_core.cvReleaseImage; import static org.bytedeco.javacpp.opencv_highgui.cvLoadImage; import static org.bytedeco.javacpp.opencv_highgui.cvSaveImage; import static org.bytedeco.javacpp.opencv_highgui.cvShowImage; import static org.bytedeco.javacpp.opencv_highgui.cvDestroyWindow; import static org.bytedeco.javacpp.opencv_highgui.cvWaitKey; import static org.bytedeco.javacpp.opencv_imgproc.cvSmooth; public class Javacv { public void smooth(String filename ,String savefilename) { //讀取來源檔案 IplImage image = cvLoadImage(filename); //覆製1個來源檔做為輸出 IplImage image2=image.clone() ; if (image != null) { //對image做平滑處理,結果存到image2 cvSmooth(image,image2); //顯示來源檔案 cvShowImage("Source",image); //顯示平滑後的檔案 cvShowImage("Smooth",image2); //等待20秒,不然一顯示完就關掉了。 cvWaitKey(20000); //儲存結果 cvSaveImage(savefilename, image2); //把視窗資源釋放 cvDestroyWindow("Source"); cvDestroyWindow("Smooth"); //cvReleaseImage 有點怪,不能使用,原因還在查。 //cvReleaseImage(image); //cvReleaseImage(image2); } } public static void main(String args[]) { //來源路徑,結果儲存路徑 new Javacv().smooth("/Users/flowercatswets/Downloads/lena_std.tif" ,"/Users/flowercatswets/Downloads/lena_smooth.tif" ); } }
值得注意一件事,程式碼中的import 前3行做個比較
import org.bytedeco.javacpp.opencv_core.IplImage; import static org.bytedeco.javacpp.opencv_core.cvReleaseImage; import static org.bytedeco.javacpp.opencv_highgui.cvLoadImage;
你會發現第2及3行import 後面有多一個static,因為cvReleaseImage 以及 cvLoadImage 都是函式。
左邊是原始圖片,右邊是經過smooth圖片 ,可以明顯發現,左圖明顯較稅利。
沒有留言:
張貼留言