0

为了查看是否可以轻松破解非常简单的验证码,我正在尝试编写一个程序(尽可能简单和小)。我希望用 C++ 编写的这个程序应该执行以下操作:

  1. 制作屏幕已知区域的部分屏幕截图。(假设 CAPTCHA 始终位于完全相同的位置 - 例如:像素 500-600 x,像素 300-400 y)。

  2. 自动将 CAPTCHA 分解为单个字母。(我将为测试创建的验证码都只有几个白色字母,总是在黑色背景上,间隔很好,让我更容易。)

  3. 然后,程序将“剪切”的字母与一组“已知”的字母图像(看起来类似于 CAPTCHA 中使用的字母)进行比较,其中包含 26 个元素,每个元素都包含一个英文字母的图像。

  4. 该程序将字母与比较映射到的图像相关联,并将该键发送到控制台(通过 std::cout)

我的问题是:是否有一个易于使用的库(我只是编程的初学者),可以处理任务 1-3(4. 相当简单)?特别是第三点是我几乎没有发现任何值得的东西。理想的情况是,如果这个库有一个“评分”功能,使用浮点数来指示图像的相似程度。然后,得分最高的就是最好的命中。(即:100.0 表示图像相同,29.56 表示它们非常不同,等等)

4

1 回答 1

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

于 2013-02-17T16:09:03.427 回答