如何将彩色的Captchas转换为灰度?

时间:2017-09-30 17:43:41

标签: image imagemagick captcha

我试图制作一个capcha求解器,但我遇到了一些麻烦。我想要解决的验证码具有不同的彩色背景。

Captcha One Captcha Two

我需要将其转换为白色背景上的黑色文字,以便tesseract-ocr

轻松识别

我试过了 convert *.png -threshold 50% *.png只显示一些数字。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

简单的50%阈值处理的问题是两种颜色都可能比50%灰色轻,因此会变成白色。或者,相反,两种颜色都可能比中灰色更暗,因此bith会变成黑色。

您需要进行双色量化才能获得2种颜色,然后转到灰度并进行标准化,使较浅的颜色变为白色,较暗的颜色变为黑色。我不是靠近电脑去测试,但那应该是:

convert input.png -colors 2 -colorspace gray -normalize result.png

现在,您会发现一些图像被反转(白色为黑色而黑色为白色),因此您可以测试左上角像素,如果是白色,则反转图像。或者,你可以得到图像的平均值,如果它超过0.5,则表明图像大部分是白色,因此需要反转。

反转:

convert input.png -negate output.png

获取左上角的像素:

convert image.png -format '%[pixel:p{0,0}]' info:-

获得平均值:

convert image.png -format "%[mean]" info:-