我有一套小尺寸的精灵,通常是25x20种尺寸,高于256x256。这些精灵中的一些被重复缩小,或者有时几个像素被删除/添加到边缘或者一种颜色已经改变。
我如何找到这些副本?我的应用程序是用C ++编写的,我的图像是SDL_Surfaces *'es。
我附上了一些示例精灵表,显示了我想要比较和重复数据删除的精灵。
这是一个更清楚地显示我想要比较的图像,因为我觉得有些人感到困惑,并且认为我想要比较“整个精灵表”,而实际上我只是希望不同的精灵相互比较:
答案 0 :(得分:2)
请在Open CV tic tac toe X / O detection上阅读我的回答。接受的答案也可能有所帮助。
我对你的案例的回答:可以使用OpenCV中的匹配形状功能完成(查看Documentation中的第3部分)
因此,对于每个图像,获取最大轮廓(您的对象)并使用 ALL 调用其他图像。对于每个对应两个轮廓之间相似性的图像,该函数返回0到1的值:值越小,轮廓越相似。您可以设置一定的阈值以消除其他图像(例如,消除所有0.5相似的图像)。试用和错误可能是找到最佳阈值的唯一方法。祝你好运!