pyautogui通过图像获取定位实现计算器自动计算

news2024/9/21 4:36:46

使用 pyautogui.locateCenterOnScreen 能够在屏幕上搜索给定图像的位置,并准确地返回该图像的中心点坐标。

🌿使用 pyautogui 实现计算器自动计算

  1. 准备工作,把计算器的按钮截图保存下来。例如:
    在这里插入图片描述
  2. 计算“7+5=”,实现代码如下:
# 自动计算器输入
import pyautogui

x = [0]*4
x[0] = pyautogui.locateCenterOnScreen('7.png')
x[1] = pyautogui.locateCenterOnScreen('+.png')
x[2] = pyautogui.locateCenterOnScreen('5.png')
x[3] = pyautogui.locateCenterOnScreen('=.png')
for i in range(4):
  pyautogui.click(x[i])
  1. 打开计算器,并运行代码,结果如下:
    在这里插入图片描述
  2. 改进:
import pyautogui
import time

def click_button(image):
    location = pyautogui.locateCenterOnScreen(image)
    if location is not None:
        pyautogui.click(location)
        time.sleep(0.5)  # 等待按钮反应
    else:
        print(f"{image} 找不到")

def clear_if_exists():
    # 检查 CE 按钮是否存在
    ce_location = pyautogui.locateCenterOnScreen('CE.png')
    if ce_location is not None:
        click_button('CE.png')  # 如果存在,点击 CE
        print("已点击 CE 按钮以清除输入。")
    else:
        print("CE 按钮未找到,无需清除。")

def calculate(expression):
    for char in expression:
        if char.isdigit() or char == '+' or char == '-' or char == '×' or char == '÷':
            click_button(f'{char}.png')  # 例如 '1.png', '2.png'
        elif char == '.':
            click_button('dot.png')  # 小数点
        elif char == '=':
            click_button('=.png')  
    time.sleep(1) 

if __name__ == '__main__':
    time.sleep(5)  # 给时间切换到计算器窗口

    clear_if_exists()  # 确保开始前清除输入
    calculate("12+34=")  # 计算 12+34 = 

刚开始不存在CE,则直接计算
在这里插入图片描述存在CE,则先按CE再计算
在这里插入图片描述


函数原型

pyautogui.locateCenterOnScreen(image, confidence=None, grayscale=False)

参数

image:必须。图像文件的路径或图像对象。
confidence:置信度,可选,默认为 None。此参数在 OpenCV 中使用,介于 0 到 1 之间的浮点数,例如 0.8,表示认为匹配的可能性需要达到 80% 以上才能返回位置。未安装 OpenCV 或不需要使用置信度,省略此参数。
grayscale:可选,默认为 False。若设为 True,函数将在灰度图像上执行搜索,这通常会加快处理速度,尤其是只需要进行颜色不敏感的查找时。

使用注意事项

  1. 提供清晰的图,图像的尺寸和颜色与屏幕上实际元素匹配,不应包含多余的背景。
  2. 图像应为 PNG、JPG 或 BMP 格式。
  3. 确保屏幕分辨率不会改变,否则可能识别失败。
  4. 确保窗口在屏幕上的可识别位置不会改变并且没有遮挡。

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

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

相关文章

【网络】WebSocket协议详解

WebSocket协议详解 一 、WebSocket 诞生背景二、WebSocket 特点三、WebSocket 的握手环节四、WebSokect 的数据格式1、 第一个字节2、第二个字节3、Masking-key4、playload Data5、一些注意细节 WebSocket 的官方文档 WebSocket 的中文文档(非官方) 一 、WebSocket 诞生背景 在…

深度学习基础—简单的卷积神经网络

3.1.卷积层 下面以卷积神经网络的某一层为例,详解一下网络的结构。 假设当前位于l层,则输入6*6*3的彩色图片,有两个3*3*3的过滤器,卷积操作后将输出2个4*4的图片。如果把过滤器看成权重w,卷积这一步操作其实就是w*a&am…

消息称华为纯血鸿蒙部分应用采用虚拟机方案

华为预计在11月发布正式版纯血鸿蒙,为了能够适配更多的App,官方也是有了新的解决方案。报道中提到,纯血鸿蒙设备对有些还没上架的应用会使用虚拟机方案过渡。据悉,华为的虚拟机方案作为过渡措施,首先能确保用户在鸿蒙系…

概率论与编程的联系及数据科学应用

目录 引言 第一章 概率模拟与编程实现 1.1 随机数生成与蒙特卡罗模拟 1.1.2 蒙特卡罗模拟 第二章 统计建模与数据分析 2.1 统计模型实现 2.2 概率图模型 第三章 概率论在机器学习中的应用 3.1 随机森林与决策树 3.2 贝叶斯分类器 总结与展望 引言 在大数据和人工智…

学习node.js 十 redis的基本语法

redis Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它提供了一个高效的键值存储解决方案,并支持多种数据结构,如字符串(Strings)、哈希(Hashes)、…

素数之和(c语言)

1./描述 //牛牛刚刚学了素数的定义:素数值指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 //牛牛想知道在[l, r] 范围内全部素数的和 //输入描述: //输入两个正整数 l,r 表示闭区间范围 //输出描述: //…

sqli-labs靶场通关攻略 46-50

主页有sqli-labs靶场通关攻略 1-45 第四六关 less-46 步骤一:利用报错注入查询库 ?sort1 and updatexml(1,concat(0x7e,database(),0x7e),1) 步骤二:查询表名 ?sort1 and updatexml(1,concat(0x7e,(select group_concat(table_name)from informatio…

如何通过日志或gv$sql_audit,分析OceanBase运行时的异常SQL

本文作者:郑增权,爱可生 DBA 团队成员,OceanBase 和 MySQL 数据库技术爱好者。本文约 2000 字,预计阅读需要 8 分钟。 简介 在 OCP 云平台的 Top SQL 界面中,能观察到异常SQL,但这些SQL并未明确显示具体的…

防泄密的方法都有哪些?

一、防泄密的方法都有哪些?使用安全通讯工具:采用加密通讯工具,确保敏感信息在传输过程中不被窃取或篡改。定期安全审计:对系统和数据进行定期的安全审计和检查,发现潜在的泄密风险并及时处理。文件加密:对…

光伏电站的施工步骤

施工准备:在施工前,需要进行现场勘查,了解施工场地的地形、地貌、气候等情况,制定施工方案和安全措施。同时,还需要准备好施工所需的材料和设备,如光伏组件、支架、电缆、逆变器等 。基础施工:根…

“面试宝典:高频算法题目详解与总结”

干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…

鸿蒙Harmony开发实战:自定义圆形组件-Canvas

在采用Java配合xml布局编写鸿蒙app页面的时候,发现sdk自带的Image组件并不能将图片设置成圆形,反复了翻阅了官方API手册(主要查阅了Compont和Image相关的API),起初发现了一个setCornerRadius方法,于是想着将…

高职院校人工智能训练师边缘计算实训室建设方案

一、引言 随着人工智能技术的飞速发展,边缘计算在提升数据处理效率、降低延迟、保护数据安全等方面展现出巨大潜力。高职院校作为技能型人才培养的重要基地,建设人工智能训练师边缘计算实训室,旨在培养掌握前沿技术、具备实战能力的复合型人才…

pnpm国内源设置

一、背景 在国内使用pnpm时,由于网络问题,经常会遇到速度慢或无法访问的问题。为了提高效率,可以将pnpm的源设置为国内的镜像源。以下是一些常用的国内pnpm镜像源以及如何设置它们的方法。 二、国内可用源 2.1 淘宝pnpm源 https://registry…

神经网络卷积层

一、卷积操作 对应位置相乘相加,最终组成一个新的矩阵,实现了降维。 二、代码 import torch import torchvision from torch import nn from torch.nn import Conv2d from torch.utils.data import DataLoaderdataset torchvision.datasets.CIFAR10(&…

三级_网络技术_54_应用题

一、 请根据下图所示网络结构回答下列问题。 1.填写路由器RG的路由表项。 目的网络/掩码长度输出端口__________S0(直接连接)__________S1(直接连接)__________S0__________S1__________S0__________S1 2.如果将10.10.67.128/2…

C++----简单了解vector

大家好,今天我们来讲讲与string相似的向量类型。之所以说他们是相似的原因是他们其中的数据类型有些效果都是一样的。当然大家不能说,既然是差不多的干嘛还有一个这个啊。不如直接用string就可以了。当然世界名言存在即合理。既然我们都能想到的东西&…

Docker 部署 net6 webapi项目

摘要:记录 net6 webapi 项目在 docker 上部署步骤,方便自己后面查看,也方便他人学习。 1. 创建 webapi 项目 点击创建新项目 选择 ASP.NET Core Web API 项目,点击下一步。 给项目命名,然后勾选将解决方案和项目放在同…

C++初学(18)

18.1、读取数字的循环 假设要编写一个将一系列的数字读入到数组中的程序,并允许用户在数组填满之前结束输入。一种方法是利用cin: int n; cin>>n; 如果用户输入的是一个单词,而不是一个数字将会怎么样?可能会发生这些情况…

环境变量--永久 & 暂时

Linux 环境变量配置信息 查看环境变量 export 查看系统所有环境变量echo $PATH 查看 PATH 环境变量值 环境变量的命名规则为:变量名变量值 多个变量值之间使用 : 分隔 添加环境变量 环境变量分类 按照作用域分类 环境变量可以简单的分成用户自定义的环境变量…