首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

大家来找茬图片对比有关问题 算法如何写才合适

2012-05-28 
大家来找茬图片对比问题 算法怎么写才合适?自己刚学C++没多长时间想自己写一个大家来找茬的辅助工具对算法

大家来找茬图片对比问题 算法怎么写才合适?
自己刚学C++没多长时间 想自己写一个大家来找茬的辅助工具 对算法也不清楚 对图像学也不是很明白

先写了一个验证自己算法的小程序FindDifferences 我把QQ大家来找茬全屏后截了几张图片 FindDifferences所作的工作就是读取截屏bmp文件 对比截屏中两张找茬图片 找出不一样的地方 思路很简单 用GetPixel得到两个图片位置中相对位置的点的 COLORREF值 如果不一样,就将两张中的一张图片中的这个点用纯色覆盖 有了想法就去写了 写出来之后运行 结果惨不忍睹 两张图片中没有几处地方是全相等的  

************************************************************************************************
这里有一个问题 是否找茬游戏中的两张图片不可能除了找茬的位置之外COLOOREF完全相等?
************************************************************************************************

之后有人提醒我要有一定的容错率 因为没有接触过图形学 怎么容错不清楚 就去网上找了一下资料 有一个公式 sqrt(absR*absR+absG*absG+absB*absB)>100 具体原理我不懂 我就拿来用了 结果还算可以 但是容错的范围是随时要改的  

***************************************************************************************************************
这里是第二个问题 两张图片对比是不是不能用GetPixel得到COLORREF来对比是否相等 必须要有容错率?
***************************************************************************************************************

对算法一筹莫展的时候去网上找了一个已经做好的QQ大家来找茬的辅助工具,不管窗口是否最小化,分辨率如何,找得都很精准,唉,信心倍受打击啊  

***************************************************************************************************************
这里是第三个问题 是不是这种辅助程序不能用简单的对比颜色 还要涉及内存问题?
***************************************************************************************************************

下面是自己写的代码

C/C++ code
#include <windows.h>#include <math.h>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int就非得写N多个


[解决办法]
既然已经有了,不要重复劳动了;

如果一定想尝试,估计是有一个动态匹配的问题吧,试一试用 dynamic programming 来解决?
[解决办法]
探讨

引用:

QQ本来就防止了这个外挂,
他在不同的点上,加+1,或-1,RGB任意颜色值,,你就OVER


那还有什么方法对比呢? 难道我找的这个程序不是对比图像而是直接找到不同地方的内存?

[解决办法]
据我所知,你找到的那个辅助程序有可能是时下流行的按键精灵做的,那个软件可以对整张图片进行分割对比,而且相似度可以自己调整,所以比较起你这个来,实用性就很高了。而且像你这么简单的思路腾讯不可能没有想到,他只是将图片稍微色阶变一下,你的程序就没法运行,但是肉眼上是看不出来的。
[解决办法]
我也觉得应该是动态匹配的问题!```
[解决办法]
简单地进行一个比喻,

对于字符串 abcde 和 abce 可以说是近似的,虽然中间相差一个字母,类似的,把

abcdefg
hijklmn
opq rst
uvw xyz



badcfeg
hjilknm
opq rst
vuw yxz

进行对比,可以发现虽然相差很大,但是同一个位置的 ASCII 码近似;

先求出最佳匹配路径,再根据最不匹配的地方,得到不匹配的图像位置。
[解决办法]
有兴趣,帮顶
[解决办法]
其实就是内存比较。。。
[解决办法]
探讨
引用:

其实就是内存比较。。。

通过像素比较很多物体边缘的地方都有很大偏差 可能就是楼上朋友所说修改了色阶的原因吧 如果是这样那么内存比较这些边缘地区是否也会出现偏差呢?

[解决办法]
我在想QQ找茬的图片会不会都是固定的,提前人工处理好一对图片,然后用程序把不一样的区域标示出来,比如用一个与图片长宽相同的二维数组,不一样的像素用1,一样的用0。然后再用自己的混淆程序将这对图片再处理一下,防止外挂。然后将这对图片和背后的标志数组保存在一起,QQ找茬运行时,随便抽图片时,就会将这个标志数组也一块抽过来了,这时只将用户鼠标点击的位置与背后的二维数组进行判断就行了。

纯瞎想。
[解决办法]
最近也很迷这个游戏,天天下班回去都玩两小时,都没时间学习了。lZ真有钻研精神啊。关注中。。。
[解决办法]
把图分块,或者高斯模糊,或者转成灰度, 再比

这个我没做过,但感觉没啥难度


[解决办法]
OpenCV
[解决办法]
玩这个游戏时用户点击的时候并不需要点击的非常精确到像素的位置,所以估计两个图片之间是比较某个区域的。如果用你说的那种比较什么色阶就太复杂了。可以提前将两个图片不同之处存储起来,然后只比较区域位置就可以了。这个可以精确到5像素以内。
[解决办法]
思路:
扫描图片时,用a*a象素的框移动式(可以隔b象素移动)的框选图片信息,计算框内的平均色度值。
最后进行两图平均色度值相差的大小排序,选择最相差最大的5个框,则此5个框为目标区。

热点排行