找两张图的不同点,破解算法应该怎么写?

找茬那种游戏,两张一样的图,其中一张多了些东西。
想做个检测工具,识别两张图的不同之处,有什么算法思路?

阅读 10.5k
7 个回答

首先将两张图的顶点对齐,然后对像素做 diff 得到一个包含 RGB 差值新图,将这个新图做归一化,再用边缘检测算法把新图里面的图像轮廓勾出来,最后求出轮廓的包络,这个包络就是找不同里面需要点击的区域了。

简单一点,按5个像素为一个单元切割大图,然后对比每个小图的二值~

最简单的办法。
假设两张图长宽一致,直接从左上角读像素,存成一个RGB二维数组。对比两个数组的不同之处,相同之处标为白色,反之标为黑色。以这个二维数组生成一张图,黑色部分就是有差异的部分了。

找茬的很好办,读取两张图片值,然后相减就行

大学毕设做了类似的东西。实际上两张图直接相减会有很多噪点的,需要一些处理。降噪的手法有很多:模糊->二值化,剩下一些色块,用连通成分标记算法将这些块整合起来,然后处理出 bounding box 就可以输出给其它模块用了。

把图按RGB亮度值作差,然后将得到的差值图像转成灰度图,再通过腐蚀和膨胀算法将不同点放大。如果有了解过OpenCV的话这东西几个函数就能搞定。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题