Java基於opencv實現圖像數字識別(一)


Java基於opencv實現圖像數字識別(一)

最近分到了一個任務,要做數字識別,我分配到的任務是把數字一個個的分開;當時一臉懵逼,直接百度java如何分割圖片中的數字,然后就百度到了用BufferedImage這個類進行操作;嘗試着做了一下,做到灰度化,和二值化就做不下去了;然后幾乎就沒有啥java的資料了,最多的好像都是c++,惹不起、惹不起......

我也想嘗試着用c++做一下,百度到了c++基於opencv來做圖像識別的;但是要下vs啊,十幾個g呢,我內存這么小,配置這么麻煩,而且vs各個版本又有自己的特色;百度了以下,java基於opencv來做圖像識別,發現也很少,但是有資料啊,而且配置也很簡單啊,能做到就做到哪,慢慢學;現在我已經做到切割圖片了,用的是投影法,效果還可以。可以先看以下

Java基於opencv實現圖像數字識別

我們來一步步實現,先從下載opencv、配置java環境、寫一個測試用例開始;肯定比你想象中的要簡單

一、下載opencv,我用的是windows系統,這個應該沒啥區別吧,java跨平台的

直接百度搜索opencv,建議去opencv中文網站下載吧;我剛開始下載的時候,下到一大半的時候突然停了,就這樣停了;明明中文網站啊,還需要梯子嗎;算了,我還是翻牆吧,然后就下好了,一步步安裝,就好了,沒啥難的。安裝好后,就長這樣,我也沒有配置環境;

安裝opencv

二、配置java開發環境

也很簡單,就是把F:\openCv\opencv\build\java這個目錄下的一個jar添加到環境變量,然后看你是系統是多少位的,把相應目錄下的文件拷貝到你的項目中

opencv配置java開發環境

空項目大概就是這樣
opencv-java空項目

三、我們測試一下,就用opencv二值化處理一張圖片

我們來看一下代碼

public static void main(String[] args) {
		// 這個必須要寫,不寫報java.lang.UnsatisfiedLinkError
		 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

		File imgFile = new File("C:/Users/admin/Desktop/open/test.png");
		String dest = "C:/Users/admin/Desktop/open";
		Mat src = Imgcodecs.imread(imgFile.toString(), Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);

		Mat dst = new Mat();

		Imgproc.adaptiveThreshold(src, dst, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 13, 5);
		Imgcodecs.imwrite(dest + "/AdaptiveThreshold" + imgFile.getName(), dst);
	}


我們來看一下效果圖
opencv二值化處理圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM