失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 用VC++ OpenCV写大家来找茬外挂

用VC++ OpenCV写大家来找茬外挂

时间:2022-05-16 14:34:58

相关推荐

用VC++  OpenCV写大家来找茬外挂

本文作者:longlongago 博客地址:/longlongago2000

1.问题:最近看到很多人在玩 大家来找茬,于是自己也下载玩了一下,但是由于基础太差,经常都是输多赢少。于是我想到了用OpenCV写个外挂,说干就干。

2.分析:大家来找茬游戏规则简单,只需找出两幅图像的不同点,由此,可以将左右两幅图进行对比,用异或运算将不同点找出。这部分不难,难的主要是定位两幅图的位置,经实验,游戏是两幅图的y方向不边,x方向会随机发生改变,故如果确定两幅图的位置成了这个程序的难点。

3.编程:

第一步,将当前屏幕截取下来。

第二步,分析图像,找出两幅图的具体位置。这里需要点技巧,我是用两幅图像相减去除背景,通过图像处理,将两幅图像

的位置找出。

自己弄个背景图像:

//两图像相减后

cvSub( t,pImg, d, NULL );//双重循环进行像素操作,找到相减后图像的两幅图像的起始位置for(int i=304;i<400;i++){if(x1!=0)break;for(j=180;j<(793+179-7);j++){s=cvGet2D(temp1,i,j); if(s.val[0]==255){if(xx!=0){x1=j;break;}xx=j;yy=i;j=573;}

第三步,通过找到的坐标进行左右两幅图像的异或运算,产生我们要的结果。

找到坐标后截取到左边的图像

右边的图像

输出结果

cvXor( right,left, left, NULL ); //异或运算

第四步,将异或后的图像显示在游戏中的图像上。

void CGameDlg::OnTimer(UINT nIDEvent) //用定时器不断对图像进行刷新显示{CBitmap bmp; bmp.Attach(bitmap);CDC dcMemory;CWnd* pwnd = GetDesktopWindow();//获取当前桌面的设备上下文CDC* pDC = pwnd->GetWindowDC();dcMemory.CreateCompatibleDC(pDC); dcMemory.SelectObject(&bmp); pDC->BitBlt(xx,yy,381,286,&dcMemory,0,0,SRCCOPY); ReleaseDC(pDC); CDialog::OnTimer(nIDEvent);}

到此大功告成!

看看界面:

最后我想说的是,玩游戏是种乐趣,做外挂也是种乐趣,但是不到情非得已的时候,请不要随便使用外挂,破坏游戏的公平性。

此文章只供参考,转载请注明:本文作者:longlongago 博客地址:/longlongago2000

有问题可留言或发邮件讨论。

如果觉得《用VC++ OpenCV写大家来找茬外挂》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。