2016-03-08 93 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)。同样,与明亮物体相邻的非常黑暗的变化窄线可能看起来像是物体的边缘,而不是图像中的黑色元素。

相关问题