分享

QQ斗地主记牌器(作弊器)原理与实现

 Once√ 2009-11-29
QQ斗地主记牌器(作弊器)原理与实现

作者:龙林 EMAIL:dragon_hn@sohu.com WEB:www.dragon-2008.com

玩了一阵子QQ斗地主游戏,无赖资质太差了,老是记不住牌,上网搜索了一下有关QQ斗地主记牌器,下载了几个,没想到这小东东居然还要注册,还要给注册费,气愤之余,自己在VC环境下做了一个,感觉不错,现将原理公布如下:

该记牌器采用图像识别原理,而不是通过网络截包的方式。

(1)获取当前QQ窗口图片,首先通过下列代码查找QQ斗地主主程序窗口:

CWnd *hwnd=FindWindow(NULL,"新斗地主");

然后通过BitBlt将窗口图片复制到内存CBitmap对象中,再通过代码:

m_BkBmp1.GetBitmapBits(length,pBuff);

获取图像的RGB数据。

(2)获取扑克牌位置

扑克牌的位置很好查看,因为扑克牌有边框,颜色为黑色,与背景色明显不同,另外牌的大小固定

(3)识别扑克牌

与“人脸识别”,“OCR”等不同,在获取扑克牌位置之后,识别扑克牌特别简单,因为扑克牌图像具有不变性,对2,3,4,5,6,7,8,9,10,J,Q,K,A等这些字符,通过统计可以发现,只要识别几个像素(特征点),就可以很快确定,下面是我识别的像素的特征点相对扑克牌左上角的坐标:

(4,4)
(6,4)
(10,4)
(5,9)
(8,9)
(10,9)
(4,15)
(7,15)
(10,15)

本来斗地主是不用识别花色的,不过为了对记牌结果进行校验,还是采用了花色识别,注意对同一个花色不同牌号可能存在不同的特征点

(4)识别牌局的开始与结束

实际上识别牌局开始就行了,牌局开始的时候主窗口会出现一个金色的“开始”按钮,程序中实际就是识别该按钮。

(5)结果显示

采用一个附于主窗口右上角的小窗口实现

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多