Java基於opencv實現圖像數字識別(一)
阿新 • • 發佈:2018-06-10
binary oid ring 是把 sca pre 內存 還需要 自己
Java基於opencv實現圖像數字識別(一)
最近分到了一個任務,要做數字識別,我分配到的任務是把數字一個個的分開;當時一臉懵逼,直接百度java如何分割圖片中的數字,然後就百度到了用BufferedImage這個類進行操作;嘗試著做了一下,做到灰度化,和二值化就做不下去了;然後幾乎就沒有啥java的資料了,最多的好像都是c++,惹不起、惹不起......
我也想嘗試著用c++做一下,百度到了c++基於opencv來做圖像識別的;但是要下vs啊,十幾個g呢,我內存這麽小,配置這麽麻煩,而且vs各個版本又有自己的特色;百度了以下,java基於opencv來做圖像識別,發現也很少,但是有資料啊,而且配置也很簡單啊,能做到就做到哪,慢慢學;現在我已經做到切割圖片了,用的是投影法,效果還可以。可以先看以下
我們來一步步實現,先從下載opencv、配置java環境、寫一個測試用例開始;肯定比你想象中的要簡單
一、下載opencv,我用的是windows系統,這個應該沒啥區別吧,java跨平臺的
直接百度搜索opencv,建議去opencv中文網站下載吧;我剛開始下載的時候,下到一大半的時候突然停了,就這樣停了;明明中文網站啊,還需要梯子嗎;算了,我還是FQ吧,然後就下好了,一步步安裝,就好了,沒啥難的。安裝好後,就長這樣,我也沒有配置環境;
二、配置java開發環境
也很簡單,就是把F:\openCv\opencv\build\java這個目錄下的一個jar添加到環境變量,然後看你是系統是多少位的,把相應目錄下的文件拷貝到你的項目中
空項目大概就是這樣
三、我們測試一下,就用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); }
我們來看一下效果圖
Java基於opencv實現圖像數字識別(一)