为了看看是否可以轻松打破非常简单的CAPTCHA,我试图编写一个程序(尽可能简单和小)。我希望用C ++编写的这个程序应该执行以下操作:
制作屏幕已知区域的部分屏幕截图。 (假设CAPTCHA总是在完全相同的位置 - 例如:像素500-600 x,像素300-400 y)。
自动将CAPTCHA解剖为单个字母。 (我将为测试创建的CAPTCHAS将只有几个白色字母,总是在黑色背景上,间隔很远,以便让我轻松。)
程序然后将“剪切”字母与一组“已知”字母图像(看起来类似于验证码中使用的字母)进行比较,其中包含26个元素,每个元素都包含一个图像英文字母。
程序将字母与比较映射到的图像关联起来,然后将该密钥发送到控制台(通过std :: cout)
我的问题是:是否有一个易于使用的库(我只是编程的初学者),它可以处理任务1-3(4.很容易)?特别是第三点是我没有找到任何有价值的东西。理想的是,如果这个库有一个“得分”功能,使用浮点来表示图像有多相似。然后,得分最高的那个是最好的。 (即:100.0表示图像相同,29.56表示它们非常不同,等等。)
答案 0 :(得分:0)
这个工作的好图书馆是OpenCV。 http://opencv.org
OpenCV具有所有必要的低级图像处理工具,可以分割验证码的不同元素。然后你可以使用它的模板匹配模块。
您甚至可以尝试直接检测字母而无需预处理。它会更慢,但验证码图像通常很小,它应该很少。看到: http://docs.opencv.org/modules/imgproc/doc/object_detection.html#cv2.matchTemplate
有关进入图书馆的一些教程,请参阅: http://docs.opencv.org/doc/tutorials/tutorials.html