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