本宝宝又回来了 Python做个简单的游戏辅助

我在玩QQ游戏 比如大家来找茬的时候 眼力不是很好 经常找不到,但是又好奇 这我没找到的位置都在哪里呢?所以我做个辅助帮我把两幅图的像素相减,再把得到的噪点值粘回去到某幅图上,总体流程列出来就是

  1. 找到”大家来找茬”游戏窗口句柄,窗口提到最前好截图
  2. 切分左右两张图片,切成小图后根据像素区间分布找出差值比较大的矩形标出
  3. OpenCv的两张图像像素相减,去噪
  4. 显示结果,把步骤2的标识图片+步骤3的像素差噪图合在一起

Ok 大致就是这样 showCodeTime

# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
### 系统自带的模块
from datetime import datetime
import ImageGrab
import shutil
import math
import os
### 可能需要额外安装的模块部分
# 自动化模块
import win32gui
import win32con
# 图片处理模块
import ImageDraw
import Image
# OpenCv模块
import cv2
import numpy as np### 全局变量
# 当前文件夹路径
CUR_DIR   = os.getcwd()# 获得句柄
game_hwnd = win32gui.FindWindow(None, u"大家来找茬")
# 强行显示界面后才好截图
win32gui.ShowWindow(game_hwnd, win32con.SW_RESTORE)
# 将游戏窗口提到最前
win32gui.SetForegroundWindow(game_hwnd)
# 裁剪得到部分主要图片,作为处理素材
game_rect = win32gui.GetWindowRect(game_hwnd)
src_image = ImageGrab.grab((game_rect[0] + 9, game_rect[1] + 190, game_rect[2] - 9, game_rect[1] + 190 + 450))# # 将得到的图片保存下来 后面如果要改进也好当素材
sucai   = os.path.join(CUR_DIR, 'sucai')
ICount  = len(os.listdir(sucai))
if not os.path.exists(sucai):os.makedirs(sucai)
save_path = os.path.join(sucai, datetime.now().strftime("%Y_%m_%d_%H_%M_%S_")+str(ICount))+'.png'
src_image.save(save_path)"""
### 这部分代码主要是拿素材来测试结果的
file_name = "full.png"
file_name = os.path.join(sucai, os.listdir(sucai)[11])
src_image = Image.open(file_name)
"""def compare(image_a, image_b):"""用来获得两图比较的数值差:返回两图的差异值 返回两图红绿蓝差值万分比之和image_a : 图a, image_b : 图b"""histogram_a = image_a.histogram()histogram_b = image_b.histogram()if len(histogram_a) != 768 or len(histogram_b) != 768:return# 红 差值比率red_a = 0red_b = 0for i in xrange(0, 256):red_a += histogram_a[i + 0] * ired_b += histogram_b[i + 0] * idiff_red = 0max_red = red_a + red_bif red_a + red_b > 0:diff_red = abs(red_a - red_b) * 10000 / max_red# 绿 差值比率green_a = 0green_b = 0for i in xrange(0, 256):green_a += histogram_a[i + 256] * igreen_b += histogram_b[i + 256] * idiff_green = 0 max_green = green_a + green_bif green_a + green_b > 0:diff_green = abs(green_a - green_b) * 10000 / max_green# 蓝 差值比率blue_a = 0blue_b = 0for i in xrange(0, 256):blue_a += histogram_a[i + 512] * iblue_b += histogram_b[i + 512] * idiff_blue = 0max_blue = blue_a + blue_bif blue_a + blue_b > 0:diff_blue = abs(blue_a - blue_b) * 10000 / max_bluemSum = max_red + max_green + max_blueresult = 0if mSum > 0:# 自定义权重计算result = ( max(red_a, red_b) + max(green_a, green_b) + max(blue_a, blue_b) ) - ( min(red_a, red_b) + min(green_a, green_b) + min(blue_a, blue_b) )result = result * 10000 / (max_red + max_green + max_blue)# 颜色白的图片 集体像素都比较高 所以总像素深度可以作为一个参考量result = result * math.pow( (max_red + max_green + max_blue) / 100000.0 , 0.7 )return resultdef pic_sub(dest, s1, s2, threshod):"""这个函数主要是计算两张图片的相熟差的dest : 结果存贮矩阵, s1 : 图1, s2 : 图2, threshod : 阈值"""for x in range(dest.shape[0]):for y in range(dest.shape[1]):if (s2[x,y] > s1[x,y]):dest[x,y] = s2[x,y] - s1[x,y]else:dest[x,y] = s1[x,y] - s2[x,y]if (dest[x,y] < threshod):dest[x,y] = 0else:dest[x,y] = 255### 创建一个类 找茬
class findCha(object):def __init__(self, src_image):super(findCha, self).__init__()# 传入要分析的窗口图片self.src_image = src_imageself.init()def init(self):# 这里主要是找到左右两张用来比对的图片 由于是我个人娱乐所用 暂时没考虑不同电脑的分辨率left_box = (84, 124, 464, 408)right_box = (541, 124, 541 + 380, 408)# 切开找到左右两图self.image_left = self.src_image.crop(left_box)self.image_right = self.src_image.crop(right_box)# 两张图片保存到本地media文件夹下 为何要保存了 因为我用了像素分布比较+OpenCV的两张图像素相减 这里保存的图就是给cv用的self.saveMedia()# OpenCV 找到两张图像素相减的差异self.bitDiff()# 根据像素分布区间差 用画矩阵的形式标识出self.drawRect(1, 1500)# 展示图片保存结果self.saveImage()def saveMedia(self):""" 找到要找的茬 两张图片保存到本地media文件夹下 """media = os.path.join(CUR_DIR, 'media')if os.path.exists(media):shutil.rmtree(media)os.makedirs(media)self.image_left_path = os.path.join(media, 'img_left.png')self.image_left.save(self.image_left_path)self.image_right_path = os.path.join(media, 'image_right.png')self.image_right.save(self.image_right_path)def bitDiff(self):""" 两张图片像素相减 去燥后的图片 """threshod = 20s1 = cv2.imread(self.image_left_path, 0)s2 = cv2.imread(self.image_right_path, 0)# 初始空矩阵 用于存储相减结果emptyimg = np.zeros(s1.shape, np.uint8)pic_sub(emptyimg, s1, s2, threshod)# 保存 二值图像,两者的差值图片self.bit_diff_path = os.path.join(CUR_DIR, 'media', 'bit_diff.png')cv2.imwrite(self.bit_diff_path, emptyimg)def drawRect(self, multiple, low_limit):"""在图片上画矩阵作为标识multiple : 图片切分大小倍数, low_limit : 根据像素区间差 差量大于这个下限值要显示"""img_width  = 380img_height = 284# 横向切割为几张图片div_x = int(19 * multiple)# 纵向切割图片div_y = int(15 * multiple)# 切成小图的长宽值width = int(math.ceil(img_width / div_x))height = int(math.ceil(img_height / div_y))# 设置画板draw = ImageDraw.Draw(self.image_right)for col in xrange(0, div_x + 1):for row in xrange(0, div_y + 1):clip_box = (col * width, row * height, (col + 1) * width, (row + 1) * height)# 左右两边裁剪出相应位置小图来比对clip_image_left = self.image_left.crop(clip_box)clip_image_right = self.image_right.crop(clip_box)clip_diff = compare(clip_image_left, clip_image_right)if clip_diff > low_limit:draw.rectangle(clip_box)# 消除滑板del drawdef saveImage(self):""" 显示结果和保存图片 """toImage = Image.new('RGBA', (380, 284*3))toImage.paste(self.image_left, (0, 0))# 左右图片像素相减后的噪点图bit_diff_img = Image.open(self.bit_diff_path).convert(self.image_left.mode)bit_diff_img = bit_diff_img.resize(self.image_left.size)img = Image.blend(self.image_right, bit_diff_img, 0.7)toImage.paste(img, (0, 284))toImage.paste(self.image_right, (0, 284*2))toImage.show()if __name__ == '__main__':findCha(src_image)

大致就是这样 现在想做成标识出差异的图片 之后去燥做得更好一些再做成自动点击自动和自动下一局的

部分结果显示

QQ大厅游戏 大家来找茬辅助相关推荐

  1. QQ找茬辅助工具的制作

    QQ找茬辅助工具的制作 转载请注明出处:http://www.cppblog.com/greatws/archive/2009/05/05/81996.html 这段时间GF一直在玩QQ找茬,看了一下 ...

  2. QQ找茬辅助工具 C#

    昨天晚上用C#做了一个QQ游戏"找茬"辅助工具.这个不能算是一个外挂工具,因为不涉及到服务器和客户端的问题,只涉及到图像处理的知识.目前只是实现了基本的功能,但是已经够用了,玩了几 ...

  3. 2022最新微信小程序游戏:一起来找茬

    正文: 2022最新微信小程序游戏:一起来找茬,有需要的自行去体验吧,其它的就没什么好介绍的了,程序是完整的. 程序: wwwsu.lanzouw.com/iVEie0bm8l5i 图片:

  4. 跟我学 编写QQ找茬辅助1 -原创文章

    今天把完美日志更新一下打算早点睡觉的.        被朋友拉着玩了一下QQ找茬..高手大有人在啊..很是悲惨..           朋友痛恨的说.不行,要找外挂玩玩..百度一下,也还有不少..对于 ...

  5. QQ找茬辅助工具的制作[转]

    出处:http://www.cppblog.com/greatws/archive/2009/05/05/81996.html 这段时间GF一直在玩QQ找茬,看了一下,原理很简单,就是找到2附图片的不 ...

  6. 大家来找茬辅助工具实现

    昨天看到同学在玩大家来找茬,一时兴起,打算自己写个辅助工具.其实游戏很简单,就是找出两幅图片中的不同之处.游戏规则了解了,那外挂的思路也就很明朗了只要对比两幅图片的像素,有不相同就存储进数组就可以了. ...

  7. “图片差异检查”辅助工具(即“大家来找茬”辅助工具)源码分享

    忽然心血来潮,想写一个辅助工具,让朋友们在"大家来找茬"之类的游戏中可以少费一些眼睛. 在Java方面我是新手,在折腾了一段时间后,终于还是写出了一个基本可用的测试版程序.详细的使 ...

  8. 找茬小程序源码、看图找不同小程序,前端+后端+教程,微信小程序游戏一起来找茬,全网首发一款可以完美运营的找茬小程序源码

    演示小程序搜[最强脑洞I全民烧脑] 一共有2510关, 达到高级后会随机出现关卡: 一共7个能量, 每闯关一次扣除一个能量值, 看激励视频可以获得一个能量值: 金币获取: 段位升级 或者 观看激励视频 ...

  9. QQ找茬辅助源码下载

    http://www.cnblogs.com/kovin/p/3531761.html

  10. 大家来找茬辅助工具超级简易版

    如上图所示,打开QQ游戏,等待游戏开始,按alt+print对当前窗口截屏,然后按start对图像分析,并按图中白色区域较多的提示点点击. 纯粹山寨,仅供娱乐哈.

最新文章

  1. (笔记)电路设计(三)之0欧姆电阻、磁珠、电感的应用
  2. 1、cocos2dx开发学习第一篇-项目工程的创建
  3. Go 语言 cannot find module providing package github.com/
  4. 二叉树----数据结构:二叉树的三种遍历及习题
  5. XenDesktop 5.5 – HDX RealTime TCP UDP Audio演示
  6. JavaScript ES2021 新特性解析
  7. Windows下同时安装Anaconda2(Python2)和Anaconda3(Python3)以及tensorflow
  8. 4、python简单线性回归代码案例(完整)_python 实现一个简单的线性回归案例
  9. 微信撤回软件安卓版_微信阻止撤回app最新版-微信阻止撤回软件下载v1.0.3 安卓版-腾牛安卓网...
  10. 各个浏览器url带参限制
  11. 【OR】YALMIP安装及使用
  12. 形式语言与自动机第二课
  13. Win10环境下安装VS2010旗舰版 和安装Visual Assist10.9.2108.0
  14. html5制作一个六角星,儿童节手工折纸六角星制作教程
  15. 题目:中国有句俗话叫“三天打渔,两天晒网”,某人从2010年1月1日期开始“三天打渔,两天晒网” 问这个人在以后的某一天是“打渔”还是“晒网”。用C或着C++语言实现程序解决问题。
  16. IceSSL插件配置
  17. Triton针对工业系统的形势分析以及检测手段 || 后附今日情报资源
  18. pyqt5 QLabel详细用法
  19. mysql对英文忽略字符集_非英文网站如何使用MySQL的字符集
  20. MOS管版图(之一)单级CMOS版图分析!

热门文章

  1. DICOM世界观·第二章 数字(D)、成像(I)与通讯(Co)
  2. 软件测试——126邮箱网页注册和登陆功能测试
  3. 平面设计内容包括什么,平面设计具体包括哪些内容
  4. mysql 模糊匹配比自己短潆字符_根据中文字符串查询拼音声母
  5. Pandas读取csv
  6. mkv文件怎样转成mp4
  7. 二十四小时不插电生活方案
  8. VS2019 团队资源管理器--Git的使用(二)
  9. 解决IP被封的问题几种方法
  10. JQuery实现灯箱特效