【问题标题】:How to convert coloured Captchas to Grey Scale?如何将彩色验证码转换为灰度?
【发布时间】:2017-10-01 05:29:43
【问题描述】:

我正在尝试制作验证码求解器,但遇到了一些麻烦。我要解决的验证码具有不同颜色的背景。

我需要将其转换为白色背景上的黑色文本,以便tesseract-ocr 可以轻松识别它

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

【问题讨论】:

  • OpenCV 标签与您的 ImageMagick 问题无关。
  • 我似乎记得一些关于解决验证码的问题已被排除在外(也许我正在考虑 ImageMagick 论坛)
  • 是的,我确实想起了 ImageMagick 论坛上的一些东西
  • 其实这是一个网络爬虫项目,否则我只能坐下来手动解决每个验证码。

标签: image imagemagick captcha


【解决方案1】:

简单的 50% 阈值的问题在于,两种颜色都可能比 50% 灰色更亮,因此会显示为白色。或者,相反,两种颜色都可能比中灰色更暗,因此 bith 显示为黑色。

您需要进行 2 色量化以获得 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:-

【讨论】:

  • 我试过convert input.png -colors 2 -colorspace gray -normalize result.png,但输出仍然不可读。 imgur.com/a/Tstjb
  • 哦,抱歉,我认为 esch 字母是单独的图像 - 因为您的示例代码中有星号。不,如果整个验证码是单个图像,我的建议将不起作用。我会再想一想。
  • 也许这就是捕获的人的意图;让垃圾邮件发送者更难破解?
  • @Bonzo 是的,他们确实让它变得更难了,但并非不可能
猜你喜欢
  • 2020-04-25
  • 2011-12-28
  • 1970-01-01
  • 2016-01-11
  • 2015-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多