大家好,我正在尝试用 Java 创建一个程序,它可以读取屏幕上的数字,也可以识别屏幕上的图像。我想知道我怎么能做到这一点?数字的字体将始终相同。我以前从未编写过这样的程序,但我对它的工作原理的想法是让程序截取屏幕截图,然后将数字图像与屏幕截图图像的部分重叠并检查它们是否匹配,对每个数字重复此操作. 如果这是执行此操作的正确方法,我将如何将其放入代码中。
提前感谢您的帮助。
你总是可以训练一个神经网络来为你做这件事。它们有时会变得非常准确。如果你使用像 Matlab 这样的东西,它实际上已经具备了这样的功能。显然有一个用于 java 的神经网络库 (http://neuroph.sourceforge.net/) 虽然我从未亲自使用过它。
这里有一个关于使用neuroph的教程:http ://www.certpal.com/blogs/2010/04/java-neural-networks-and-neuroph-a-tutorial/
为此,您可以使用神经网络、支持向量机或其他机器学习结构。但它不会完成全部工作。如果您进行屏幕截图,您将得到一个非常大的图像,您需要在其中找到各个字符。您还需要处理这样一个事实,即相机可能不会直接指向您要阅读的文本。您可能需要使用一系列算法来锁定图像的正确部分,然后以大小变得中性的方式对其进行下采样。
这是我编写的一个简单的 Java 小程序,它可以完成其中的一些工作。
http://www.heatonresearch.com/articles/42/page1.html
它使您可以在相对较大的区域上绘图并锁定您的字符。然后它识别它。我正在使用字母表,但数字应该更容易。包含完整的 Java 源代码。
One simpler approach could be to use template matching. If the fonts are same, and/or the size (in pixels)is known, then simple template matching can do the job for you. ifsize of input is unknown, you might have to create copies of images at different scales and do the matching at each scale. One with the extreme value(highest or lowest depending on the method you follow for template matching) is your result. Follow this link for details