2014-09-04 22 views
4

我得這個階段: picture of img如何動態地從圖像中切出數字?

在哪裏可以找到上面的圖片中的數字,但我需要把它們剪下來,所以我可以保持秩序等,但隨着數量的增加的間距變化和號碼的位置?

所以我認爲它應該是一個白色的PX找到一個繼續,直到它找到一個堅實的黑色col,然後使用點來做一個簡單的剪切任何幫助將是偉大的。

回答

3

簡單的解決辦法是這樣的:

  1. 發現包含白色像素
  2. 從該行的第一至上水平線發現其中只包含黑色像素

與第一水平線兩條線是你的上邊界和下邊界。

這個邊界之間進行這樣的:

  1. 發現包含白色像素
  2. 從該行發現其中只包含黑色像素和最後的垂直線的第一個最左側的垂直線後,可直接接觸與白色像素一致。

這兩行是你的左右邊界。

分離單個數字的步驟可以類似地執行。

如果您需要確定圖片中的數字,我推薦使用專門的計算機視覺庫。

一些VB.net僞代碼,讓你去:

Sub FindTopBorder(image As MyImage) As Integer 
    For y = 0 to image.Height - 1 
    For x = 0 to image.Width - 1 
     Dim pixel = image.GetPixel(x, y) 
     If ('Check if pixel is white here with RGB or Color') Then 
     Return y 
     End If 
    Next 
    Next 
    ' Just in case there are no white pixels or use an exception instead 
    Return -1 
End Sub 
+0

你可以敲一點代碼togeather做一個雙方,因爲我不知道如何啓動它?謝謝 – 2014-09-04 12:29:47

1

我就開始尋找到連接的組件分割。你找到一個字符(數字)內的像素。然後運行連接組件算法,該算法根據特定規則集(例如,顏色的輕微偏差,在硬邊界處停止等)查找所有連接的像素。

http://en.wikipedia.org/wiki/Connected-component_labeling

如果你可以使用圖書館,我敢肯定,OpenCV的或類似的庫支持這個開箱即用。

//編輯 我看到你需要VB.net。將某些算法移植到VB或自己創建一個算法是最容易的。

參見例如http://www.codeproject.com/Articles/336915/Connected-Component-Labeling-Algorithm

什麼期望

輸入

含有兩種形狀的圖像:

輸出

現在每個被分離成單個圖像。