gpt4 book ai didi

c# - 无法使用此程序绘制图像?

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:51 24 4
gpt4 key购买 nike

我正在尝试处理图像以找出其中的红色区域。我扫描像素,如果发现它们足够红,它们将转换为黑色,否则为白色。

为了加快这个过程,我跳过了某些像素,并需要在它们的位置绘制黑色或白色 block 。我正在使用这个功能,但它似乎在某处是错误的。我最后得到的图像是完全空白的。

    public void ProcessFrame( ref Bitmap image )
{
int skip = 10;
Graphics g = Graphics.FromImage(System.Drawing.Image.FromHbitmap(image.GetHbitmap()));
SolidBrush black = new SolidBrush(Color.Black);
SolidBrush white = new SolidBrush(Color.White);
for (int i = 0; i < image.Width; i=i+skip)
{
for (int j = 0; j < image.Height; j = j + skip)
{

Color cl = image.GetPixel(i, j);
if (cl.R > (cl.G * 2) && cl.R > (cl.B * 2))
{
g.FillRectangle(black, new Rectangle(i, j, skip, skip));
}
else
{
g.FillRectangle(white, new Rectangle(i, j, skip, skip));
}
}
}
}

您能指出错误吗,或者任何其他更好的方法来实现我的目标?

最佳答案

空白是指白色吗?

我不知道你的图像,但是 if (cl.R > (cl.G * 2) && cl.R > (cl.B * 2)) 不是一个好的测试发红。 #010000 通过了该测试,但基本上是黑色的。而且,#ffaaaa 看起来很红,但不会通过。

如果您有一张非常暗的图像,很多像素可能会通过该测试但不是很红。对于浅色图像,大量红色像素不会通过。

可能最好的方法是将颜色转换为 HSL,然后使用红色区域中的 H(ue) 值,但前提是 S(饱和度)和 L(亮度)足够亮且非灰色(超过了不仅仅是黑色或灰色的阈值)。

关于c# - 无法使用此程序绘制图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7231849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com