我有一个程序,我将一张图像作为输入,我必须将它与大约 640 个已知图像进行比较,看看哪一张最相似。为此,我正在考虑使用 OpenCV 的匹配模板,因为它在做我想做的事情时似乎非常快速有效。
我注意到匹配两个 400x240 像素的图像 1000 倍比在 1400x240 像素中匹配 400x240 像素的图像要慢得多,尽管它们都是 1000 次匹配。我的想法是将 640 张图像组合成一张大图像,将它们包含在一个网格中(很容易做到,因为它们都具有相同的大小)。
这样做我可以真正加快这个过程,如果我可以只在大组合参考的一些子图像中匹配输入图像的模板(那些在“网格像素”中左上角的子图像,就像在一个子图像中一样实际上是我用来组合成大参考图像的 640 张图像之一),但似乎没有办法告诉匹配模板只匹配指定的一组位置。
我怎样才能加快这个过程?是否有不同的库(我正在使用 Python)执行与匹配模板类似的操作,但我可以在其中指定要匹配的子图像?有完全不同的方法更适合我的目标吗?
编辑:基本上我要做的是:我正在从视频游戏中截取屏幕截图,并且在屏幕截图中有一些角色的干净肖像(400x240 像素)。我有所有角色的清晰肖像(其中 80 个,每个 8 个皮肤,总共 640 个肖像),我想找出哪些肖像最接近屏幕截图中的那个,以便我可以识别所扮演的角色。如果我也可以像 OpenCV 中的 matchTemplate 那样“屏蔽”一些像素,那就太棒了,因为 400x240px 矩形的某些特定部分会因玩家而异,我希望我不必考虑这一点并且可以屏蔽掉那些(已知的)像素