2016-09-26 25 views
0

什麼是最好的C#算法計算在禁區不黑的像素數? 我有例如這張圖片。我點擊紅色按鈕位置上的鼠標。我想知道有多少不是黑色的像素(在這個例子中白色像素)處於閉合區域(正方形和矩形不應該被計算)?什麼是計算封閉區域中非黑色像素數的最佳算法?

pixel count

+0

定義一個 「區域」。它是否修復?爲什麼不應該計算正方形和三角形? – ThePerplexedOne

+3

你可以使用[顏色填充](https://en.wikipedia.org/wiki/Flood_fill)算法和計算像素 – samgak

回答

1

您需要emguCV/C#找到你的圖像輪廓(BLOB)。通過該庫,讓你得到你的圖像上的所有輪廓提供的一個函數:

var contours = YourImage.FindContours(CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, RETR_TYPE.CV_RETR_EXTERNAL); 

然後,你需要建立自己的算法,以檢查其輪廓沒有你的鼠標座標秋天你的樣本圖像。只有三個輪廓(Square,Rectangle和其他)。您將需要遍歷這三個和測試您的鼠標座標下他們的每一個座標,考慮到他們的面積,形狀的..等

+0

雖然他問「最好的」,這是主觀的,這將是主要的矯枉過正提出的簡單問題。 –

+0

@AndrewHanlon我認爲要找到圖像的最大的輪廓是EmguCV非常簡單。 –

+0

他的問題沒有詢問輪廓或發現最大的問題。它詢問選定區域中有多少像素。可以實現許多經典算法,它們不需要封裝到本地CV庫,也不需要從CV視角考慮它。 –

1

你需要的是非常相似填充算法,唯一的區別是,代替改變像素顏色,你會數它們。搜索填充算法的實現。

+0

這絕對是正確的做法。唯一需要注意的是許多填充算法允許像素被多次「觸摸」,這在計數中不會好。 –

相關問題