2014-04-09 42 views

回答

0

這裏有一個簡單的方法(但我不知道是否會工作無處不在測試它自己。)

注:代碼是在Python,我不這樣做的Java,我們對此深感抱歉即:(

  1. 裝入灰度圖像
  2. 應用大津的二進制
import cv2 
import numpy as np 
img = cv2.imread('test.png',0) 
ret, thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU) 

下面是限圖像

enter image description here

現在,你可以嘗試兩種方法:

3A。 位數與3×3內核

解析度= cv2.medianBlur模糊(THRESH,3)

結果:

enter image description here

3b中。 3x1內核(垂直)侵蝕。 3x1,因爲圖像中的所有線條都更加水平。它有垂直線在其他的圖像,你可能需要採取的3x3內核(不知道。檢查它)

kernel = np.ones((3,1)) 
cls = cv2.erode(thresh, kernel) 

如果你認爲你正在失去的數字有些部分還,你可以申請擴張侵蝕後,或用形態學開放功能取代所有東西。

結果:

enter image description here

最後,找到輪廓。它也會拾取預處理圖像中留下的一些噪音,但您可以通過檢查它們的寬高比,面積等來濾除它們。

+0

我想知道如何找出閾值是127,因爲我有各種圖像,我需要有一般功能 – user3396727

+0

答案修改。答覆修改。你在那裏通過0。大津會自動找到合適的閾值。 –