范围:
大家好,我正在尝试将此验证码转换为“黑白”(二值化)图像,其中字符为白色,其余部分(背景、线条、随机图片)为黑色。
可以在此处找到验证码的链接。刷新会给你另一个验证码。
原因:
我知道大多数人认为弄乱验证码是错误的,所以我在这里为自己辩护。这将仅用于知识/自我挑战。这些图像没有其他用途。
问题:
在研究了这些图像一段时间后,我发现一个好的方法是将颜色替换:“白色和黄色”到“Color.Black”,并且所有其他颜色都应该替换为“Color.White”。
在此之后,我将“反转”颜色,将我带到我想要的输出。
代码示例:
在这段代码中,我试图将每个图像的颜色“黑色”替换为 SkyBlue 像素。
WebRequests wr = new WebRequests(); // My class to handle WebRequests
Bitmap bmp;
string url = "http://www.fazenda.rj.gov.br/projetoCPS/codigoImagem";
bmp = wr.GetBitmap (url);
for (int i = 1; i < bmp.Height ; i++)
{
for (int j = 1 ; j < bmp.Width ; j++)
{
if (bmp.GetPixel(j,i).Equals(Color.Black))
{
bmp.SetPixel(j,i, Color.SkyBlue);
}
}
}
这段代码根本不起作用,我不知道为什么,但在这个例子中没有像素被替换。
问题:
我怎样才能使这项工作?我在这里想念什么?
此外,对我来说,理想的情况是将此图像的调色板“减少”为“基本”颜色,这将使我在这里的工作更加轻松。
我已经尝试过AForge 框架,我用它来减少颜色,但它根本不起作用,结果不是我期望的。
为了正确二值化此图像,我可以在这里做什么?
提前致谢,
马塞洛·林斯。