2016-03-08 90 views
0

我在製作程序,我需要知道如何查看位圖圖像中的像素是非常黑還是黑。非常感謝,如果你能幫助。如何檢測位圖中的像素是否爲黑色

//need help 
if (_Bitmap.GetPixel(c, d, Color.FromArgb(255) == 255)) mouse_event((int)Test.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 
//need help 

回答

3

爲了得到你應該使用GetPixel方法像素的顏色。 您可以使用Color類的GetBrightness方法來獲得亮度並檢查「多暗」是顏色。 純黑色的亮度等於0,最大值爲1.

因此,您可以將亮度與某個閾值進行比較,例如0.02。

if (_Bitmap.GetPixel(c,d).GetBrightness() < 0.02) { ... } 
0

您的問題要麼非常簡單,要麼看似複雜。

像素是否爲黑色取決於像素所表達的顏色模型。在RGB中,黑色像素用整數0表示。其他顏色模型還有其他表示方法用於黑色。在每種情況下,確定一個像素是否是純黑色是非常直接的。 但是,您還會問一個像素是否非常黑暗,這可能會非常棘手。

如果你有一個明確的黑暗閾值(比如強度/發光度小於10%),那麼答案也很簡單。 這是在顏色模型與一個單獨的亮度分量更容易,但在RGB你可能會做出應有具有以下近似redComponent < 25 && greenComponent < 25 && blueComponent < 25

但是如果你問一個像素是視爲暗,那麼我們線程進入更復雜的領域。要確定一個像素是否被視爲黑暗,您需要考慮相鄰像素的值並確定是否存在變暗漸變。如果某些像素陰影接近局部最大強度,則它們看起來會很亮,但如果它們接近局部最小強度,則會看起來很暗(有關衆所周知的示例,請參見checker shadow illusion)。同樣,與明亮物體相鄰的非常黑暗的變化窄線可能看起來像是物體的邊緣,而不是圖像中的黑色元素。

相關問題