python + tensorflow 开局托儿所自动点击脚本

news2024/11/15 10:04:57

python开局托儿所自动点击脚本

    • 屏幕截图
    • 图片数字识别
    • 消除算法
    • 自动点击

屏幕截图

python 屏幕截图可以使用pyautogui或者PIL。我使用的是PIL中的ImageGrab(要授权)。

image = ImageGrab.grab(bbox=(0, 0, tool.static_window_width, tool.static_window_height))
image = np.array(image.getdata(), np.uint8).reshape(image.size[1], image.size[0], 4)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

先上连接:开局托儿所
将截取的图片转成灰度图后就是下面这个样子。
开局托儿所屏幕截图
接下来将每个数字截取出来。16行10列,共有160个数字。

for i in range(16):
			x_start = self.x_start
			x_end = x_start + self.num_width
			imgelist = list()
			center_pos = []
			for j in range(10):
				every_num = image[y_start:y_end,x_start:x_end]
				every_num = cv2.resize(every_num, (28, 28), interpolation=cv2.INTER_AREA)
				_, every_num = cv2.threshold(every_num, 127, 255, cv2.THRESH_BINARY)
				
				center_pos.append((x_start + self.num_width/2,y_start + self.num_width/2))
				imgelist.append(every_num)
				x_start += x_dis
				x_end   += x_dis

			self.imagelists.append(imgelist)
			self.center_pos.append(center_pos)
			y_start += y_dis
			y_end   += y_dis

图片数字识别

裁剪好图片就可以使用深度学习模型进行数字识别,这里也是使用经典的LeNet模型。首先要手动标注一部分数字作为训练集进行训练。(github链接包含我手动标注的训练集,可以直接使用)
手动准备训练集
有了训练集就可以开始训练模型。LeNet 网络结构:

def buildModel(self):
        self.model.add(Conv2D(input_shape=(28,28,1),filters=6, kernel_size=(5,5), strides=(1,1), padding='same', activation='relu'))
        self.model.add(MaxPool2D(pool_size=(2,2), strides=(2,2),padding='same'))
        self.model.add(Conv2D(filters=16, kernel_size=(5,5), strides=(1,1), padding='valid', activation='relu'))
        self.model.add(MaxPool2D(pool_size=(2,2), strides=(2,2),padding='same'))
        self.model.add(Conv2D(filters=120, kernel_size=(5,5), strides=(1,1), padding='valid', activation='relu'))
        self.model.add(MaxPool2D(pool_size=(2,2), strides=(2,2),padding='same'))
        self.model.add(Flatten())
        self.model.add(Dense(84, activation='relu'))
        self.model.add(Dense(9, activation='softmax'))
         # 形成网络(同时添加优化器)
        self.model.compile(loss='categorical_crossentropy',
                      optimizer=RMSprop(),
                      metrics=['accuracy'])

        self.load_model()
        # 查看网络结构,输出形状,参数个数
        print(self.model.summary())

训练好模型就可以对数字图片进行识别,

 def predict(self,imgs):
        predict = self.model.predict(imgs)
        index = np.argmax(predict,axis = 1)
        index=index.reshape(16,10)
        index += 1

        print(index)
        return index

消除算法

识别好图片后接下来就是消除了,算法思路是从左上角开始优先列遍历,贪心思想,只要遇到相加为10的就消除。step是一各栈结构,记录每一步,循环遍历,直到找不到解时候在回退。这里采用的固定回溯,每次回溯当前步数的4/5。在20s的时间内如果没有搜索完所有可能也要退出。

def comput_ij(self,i,j):
	yend = i 
	xend = j
	res = []
	while yend < len(self.map):
		sum = 0
		xend = j
		while xend < len(self.map[0]):
			for k in range(i,yend+1):
				sum += self.map[k][xend]
			if sum == 10:
				res.append((yend,xend))
			elif sum >10:
				if yend != i and xend == j :
					 return res
				else:
					break
			xend += 1
		yend += 1

	return res
def kjtes(self):
	time_start = time.time()
	time_end = time.time()

	while (time_end - time_start) <20:
		if not self.setps.is_empty():
			for t in range(int(self.setps.size() / 5 * 4)):
				self.backup()

		isfind = True
		while isfind:
			isfind = False
			i = 0
			while i < len(self.map):
				j = 0
				while j < len(self.map[0]):
					results = self.comput_ij(i,j)
					if len(results) >0 :
						for res in results:
							if(self.set_steps(i,j,res[0],res[1]) == True):
								isfind = True
								break
					j += 1
				i += 1
		
		new_map = np.array(self.map)
		cnt_array = np.where(new_map,0,1)
		score = np.sum(cnt_array)
		if score > self.score:
			print("------",score)
			self.score = score
			self.result = copy.deepcopy(self.current_result.items)

		time_end = time.time()
		if int(time_end- time_start ) % 10 == 0:
			print("耗时....",(time_end- time_start),self.score,self.max_size,self.min_size)
			print("------",self.score)

未完。。。明天继续

自动点击

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1535169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人脸表情识别系统项目完整实现详解——(三)训练MobileNet深度神经网络识别表情

摘要&#xff1a;之前的表情识别系统升级到v3.0版本&#xff0c;本篇博客详细介绍使用PyTorch框架来构建并训练MobileNet V3模型以进行实现表情识别&#xff0c;给出了完整实现代码和数据集可供下载。从构建数据集、搭建深度学习模型、数据增强、早停等多种技术&#xff0c;到模…

Django日志(一)

一、概念与配置 1.1、概述 日志是程序员经常在代码中使用快速和方便的调试工具。它在调试方面比print更加的优雅和灵活 而且日志记录对于调试很有用,可以提供更多,更好的结构化,有关应用程序的状态和运行状况的信息 Django框架的日志通过python内置的logging模块实现的,可…

inputStream.avaliable()方法网络操作读取不全BUG

一、问题描述 公司有个需求&#xff0c;就是调用方&#xff08;我&#xff09;需要把pdf文件转为Base64字符串作为参数传递为被调用方&#xff0c;以下是大致转换过程&#xff1a; URL url new URL("http://xxxx.pdf");HttpURLConnection uc (HttpURLConnection) …

XR“黑话”

MTP&#xff08;Motion-To-Photon Latency&#xff09;&#xff1a;实际人体发生运动到图像显示到屏幕上的时间延迟。早期一些vr产生晕动症的主要原因。 ATW&#xff08;Asynchronous Timewarp&#xff09;&#xff1a;主要解决两个问题&#xff0c;一是延迟&#xff0c;二是补…

R语言Meta分析核心技术:回归诊断与模型验证

R语言作为一种强大的统计分析和绘图语言&#xff0c;在科研领域发挥着日益重要的作用。其中&#xff0c;Meta分析作为一种整合多个独立研究结果的统计方法&#xff0c;在R语言中得到了广泛的应用。通过R语言进行Meta分析&#xff0c;研究者能够更为准确、全面地评估某一研究问题…

Django日志(三)

内置TimedRotatingFileHandler 按时间自动切分的log文件,文件后缀 %Y-%m-%d_%H-%M-%S , 初始化参数: 注意 发送邮件的邮箱,开启SMTP服务 filename when=h 时间间隔类型,不区分大小写 S:秒 M:分钟 H:小时 D:天 W0-W6:星期几(0 = 星期一) midnight:如果atTime未指定,…

Avue框架实现图表的基本知识 | 附Demo(全)

目录 前言1. 柱状图2. 折线图3. 饼图4. 刻度盘6. 仪表盘7. 象形图8. 彩蛋8.1 饼图8.2 柱状图8.3 折线图8.4 温度仪表盘8.5 进度条 前言 以下Demo&#xff0c;作为初学者来说&#xff0c;会相应给出一些代码注释&#xff0c;可相应选择你所想要的款式 对于以下Demo&#xff0c…

管理类联考–复试–英文面试–问题–WhatWhyHow--纯英文汇总版

文章目录 Do you have any hobbies? What are you interested in? What do you usually do in your spare time? Could you tell me something about your family&#xff1f; Could you briefly introduce your family? What is your hometown like? Please tell me so…

HTTPS 协议原理

目录 HTTPS VS HTTP HTTPS是什么 概念准备 常见的加密方式 对称加密 一个简单的对称加密例子 非对称加密 数据摘要&&数据指纹 数字签名 HTTPS 的工作过程探究 方案1-只使用对称加密 方案2-只使用非对称加密 方案3-双方都使用非对称加密 方案4-非对称加密…

01、Lua 入门教程

Lua 入门教程 Lua是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。 Lua是巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of…

搭建jumpserver堡垒机

堡垒机介绍&#xff1a; jumpServer是一款开源的堡垒机&#xff08;Bastion Host&#xff09;和会话管理系统&#xff0c;用于管理和保护企业的服务器和网络设备。它提供了安全的远程访问和会话审计功能&#xff0c;帮助组织实现对敏感系统和资源的集中管理和控制。 功能&…

VMware设备VMnet0上的网桥因桥接的以太网接口关闭而暂时停止运行(此虚拟机可能无法与主机或网络中的其他计算机通信,不显示ip)

文章目录 VMware设备VMnet0上的网桥因桥接的以太网接口关闭而暂时停止运行&#xff08;此虚拟机可能无法与主机或网络中的其他计算机通信,不显示ip&#xff09;解决办法如下1、查看本机电脑网络信息&#xff0c;看看用的是哪个网卡2、点击Vmware左上角的编辑&#xff0c;打开虚…

【JS】JavaScript 中的原型与原型链

JavaScript 中的原型与原型链 原型1 函数中 prototype 指向原型对象2 对象中 __proto__ 指向原型对象3 原型对象中 constructor 指向构造函数4 __proto__ 与 [[Prototype]] 的关系5 所有非空类型数据&#xff0c;都具有原型对象6 new运算符做了哪些事情 原型链1 举个栗子1.1 直…

[linux]--关于进程概念(下)

目录 孤儿进程 环境变量 将程序放到PATH路径下 设置PATH环境变量 设置别名 环境变量相关的命令 环境变量的组织方式​编辑 通过系统调用获取环境变量 环境变量通常是具有全局属性的 进程优先级 查看系统进程 用top命令更改已存在进程的nice&#xff1a; 程序地址空…

mac下Appuim环境安装-持续更新中

参考资料 Mac安装Appium_mac电脑安装appium-CSDN博客 安卓测试工具&#xff1a;Appium 环境安装&#xff08;mac版本&#xff09;_安卓自动化测试mac环境搭建-CSDN博客 1. 基本环境依赖 1 node.js 2 JDK&#xff08;Java JDK&#xff09; 3 Android SDK 4 Appium&#x…

数据库系统概论-第14章 大数据管理

14.1 大数据概述 14.2 大数据的应用 14.3 大数据管理系统 14.4 小结

3D轻量引擎HOOPS SDK:EDA应用程序高效开发利器

电子设计自动化&#xff08;EDA&#xff09;软件在现代工程实践中扮演着至关重要的角色。随着技术的不断进步和市场的竞争加剧&#xff0c;开发高效、可靠的EDA应用程序成为了行业内的一项迫切需求。在这一背景下&#xff0c;Tech Soft 3D的HOOPS SDK&#xff08;Software Deve…

灵境矩阵平台x百度---智能体(一)

什么是数据插件 大模型插件:大语言模型插件是随着大语言模型发展而诞生的全新插件。大语言模型插件的核心是Web API独立于大语言模型&#xff0c;插件开发过程不受大语言模型的约束&#xff0c;同时没有开发语言的限制&#xff0c;更加通用&#xff0c;只要WebAPI遵循RESTfuI相…

步进电机驱动器的接线与使用(接线详细)

今天小编就来继续学习与使用步行电机的学习&#xff0c;如果位置对你有帮助&#xff0c;评论收藏&#xff0c;点赞一下 步进电机驱动器 步进电机驱动器是一种专用于控制步进电机的电子设备&#xff0c;用于控制步进电机的转动和位置。步进电机是一种将电信号转换为机械运动的电…

R包安装失败怎么办?(一)msigdbr

R包安装失败 如果是网络原因&#xff08;error connection&#xff09;&#xff0c;就使用本地安装的方法。如果是网络原因&#xff0c;通常会出现安装超时&#xff0c;或者网络无法连接的提示 当你把timeout 设置到1000之后还会报错&#xff0c;怎么办&#xff1f; options…