我目前正在 C# 中试图找出一种在大图像中查找特定模式的方法,实际上是屏幕截图。需要 100% 匹配,所以问题很简单。
测试 Material :
http://www.myhideout.eu/temp/pattern.png (注意:透明像素无关紧要,不应进行测试。)
http://www.myhideout.eu/temp/test.png
如果找到模式,我将需要某种坐标以便我知道在哪里,但这是简单的部分。
到目前为止,我想出的唯一方法是显而易见的方法。取图案的第一个像素并遍历测试图像,直到找到匹配项,然后测试图案的其余部分,直到测试失败或没有更多图案为止。如果测试失败,请继续使用与图案的第一个像素匹配的下一个像素,然后重试。如果你在没有匹配的情况下运行测试图像,那么显然没有这样的模式,这应该是测试的结果。
我理论上这是可行的,但实际上事情要复杂一些。我还没有给你提供构建代码的正确方法,我所做的测试用例有一些相当奇怪的错误,考虑到复杂性,这并不奇怪。
然而,我最关心的是时间。这只是漫长过程的一小部分,目标是将总执行时间缩短到几秒钟。想象一个 1920*1200 的图像,这大约是极限,其中模式在末尾,并且在此之前发生了几个部分匹配。
我当然搜索过网络、各种论坛等,但我想出的唯一 Material 非常先进,即使我设法理解它的用途非常不同,也没什么用处。
我也一直在考虑是否可以将模式和测试图像转换为某种位集,然后只是通过 AND、SHIFT 和/或 MASK 来完成它,但这超出了我目前的能力。
我想我已经在这里描述了我的问题。对于代码示例的滞后,我很抱歉,但是我所获得的内容对任何人都没有多大用处,而且有点令人尴尬。
我将非常感谢任何帮助。
最佳答案
关于c# - 图像模式匹配(如果存在返回坐标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171894/