我正在大学里研究机器学习问题,我的第一项任务是将图像转换为黑白。
问题是我的图像带有透明度,我不知道如何去除它。
我正在尝试的方法:
public static Bitmap RemoveTransparency (Bitmap src)
{
Bitmap target = new Bitmap (src.Size.Width, src.Size.Height);
Graphics g = Graphics.FromImage (target);
g.Clear (Color.White);
g.DrawImage (src, 0, 0);
return target;
}
一个输入图片的例子:
“RemoveTransparency”调用后输出图片的示例:
有人知道这是怎么回事吗?似乎背景和字母颜色相同...而且如果我把颜色改为白色,我的背景是黑色?
谢谢!
src
图像的来源是什么?它以何种方式“具有透明度”?如果它实际上是一个32bpp位图,其中透明像素具有alpha值为0,则您发布的代码将起作用。因此,这表明您在原始图像方面遗漏了一些关键信息。您应该发布一个完整的代码示例,包括源位图的自包含初始化。请参阅http://stackoverflow.com/help/mcve。 - Peter DunihoGraphics
对象的默认CompositingMode
是SourceCopy
。"...并将结果保存到新的.png文件中。"您的PNG文件具有透明度,因此您的输出也只有透明的黑色像素。尝试保存为没有alpha通道的JPG。您会发现您的图像全是黑色的,因为在白色背景上绘制透明的黑色像素时没有使用alpha混合。 - Timothy Shields