找茬那种游戏,两张一样的图,其中一张多了些东西。 想做个检测工具,识别两张图的不同之处,有什么算法思路?
认证0级讲师
首先将两张图的顶点对齐,然后对像素做 diff 得到一个包含 RGB 差值新图,将这个新图做归一化,再用边缘检测算法把新图里面的图像轮廓勾出来,最后求出轮廓的包络,这个包络就是找不同里面需要点击的区域了。
简单一点,按5个像素为一个单元切割大图,然后对比每个小图的二值~
最简单的办法。 假设两张图长宽一致,直接从左上角读像素,存成一个RGB二维数组。对比两个数组的不同之处,相同之处标为白色,反之标为黑色。以这个二维数组生成一张图,黑色部分就是有差异的部分了。
找茬的很好办,读取两张图片值,然后相减就行
大学毕设做了类似的东西。实际上两张图直接相减会有很多噪点的,需要一些处理。降噪的手法有很多:模糊->二值化,剩下一些色块,用连通成分标记算法将这些块整合起来,然后处理出 bounding box 就可以输出给其它模块用了。
把图按RGB亮度值作差,然后将得到的差值图像转成灰度图,再通过腐蚀和膨胀算法将不同点放大。如果有了解过OpenCV的话这东西几个函数就能搞定。
研一数字图像处理的实验四。。。楼主是不是!
首先将两张图的顶点对齐,然后对像素做 diff 得到一个包含 RGB 差值新图,将这个新图做归一化,再用边缘检测算法把新图里面的图像轮廓勾出来,最后求出轮廓的包络,这个包络就是找不同里面需要点击的区域了。
简单一点,按5个像素为一个单元切割大图,然后对比每个小图的二值~
最简单的办法。
假设两张图长宽一致,直接从左上角读像素,存成一个RGB二维数组。对比两个数组的不同之处,相同之处标为白色,反之标为黑色。以这个二维数组生成一张图,黑色部分就是有差异的部分了。
找茬的很好办,读取两张图片值,然后相减就行
大学毕设做了类似的东西。实际上两张图直接相减会有很多噪点的,需要一些处理。降噪的手法有很多:模糊->二值化,剩下一些色块,用连通成分标记算法将这些块整合起来,然后处理出 bounding box 就可以输出给其它模块用了。
把图按RGB亮度值作差,然后将得到的差值图像转成灰度图,再通过腐蚀和膨胀算法将不同点放大。如果有了解过OpenCV的话这东西几个函数就能搞定。
研一数字图像处理的实验四。。。楼主是不是!