Java基于opencv實現圖像數字識別(一)
最近分到了一個任務饶囚,要做數字識別斩跌,我分配到的任務是把數字一個個的分開;當時一臉懵逼可训,直接百度java如何分割圖片中的數字,然后就百度到了用BufferedImage這個類進行操作捶枢;嘗試著做了一下握截,做到灰度化,和二值化就做不下去了烂叔;然后幾乎就沒有啥java的資料了谨胞,最多的好像都是c++,惹不起蒜鸡、惹不起......
我也想嘗試著用c++做一下胯努,百度到了c++基于opencv來做圖像識別的;但是要下vs啊逢防,十幾個g呢叶沛,我內存這么小,配置這么麻煩忘朝,而且vs各個版本又有自己的特色灰署;百度了以下,java基于opencv來做圖像識別局嘁,發(fā)現也很少溉箕,但是有資料啊,而且配置也很簡單啊悦昵,能做到就做到哪肴茄,慢慢學;現在我已經做到切割圖片了但指,用的是投影法寡痰,效果還可以∶渡模可以先看以下
Java基于opencv實現圖像數字識別
我們來一步步實現氓癌,先從下載opencv、配置java環(huán)境贫橙、寫一個測試用例開始贪婉;肯定比你想象中的要簡單
一、下載opencv卢肃,我用的是windows系統(tǒng)疲迂,這個應該沒啥區(qū)別吧才顿,java跨平臺的
直接百度搜索opencv,建議去opencv中文網站下載吧尤蒿;我剛開始下載的時候郑气,下到一大半的時候突然停了,就這樣停了腰池;明明中文網站啊尾组,還需要梯子嗎;算了示弓,我還是翻墻吧讳侨,然后就下好了,一步步安裝奏属,就好了跨跨,沒啥難的。安裝好后囱皿,就長這樣勇婴,我也沒有配置環(huán)境;
安裝opencv
二嘱腥、配置java開發(fā)環(huán)境
也很簡單耕渴,就是把F:\openCv\opencv\build\java這個目錄下的一個jar添加到環(huán)境變量,然后看你是系統(tǒng)是多少位的爹橱,把相應目錄下的文件拷貝到你的項目中
opencv配置java開發(fā)環(huán)境
空項目大概就是這樣
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二值化處理圖片