小猿口算脚本

news/2024/10/11 5:50:09/

实现原理:安卓adb截图传到电脑,然后用python裁剪获得两张数字图片,使用ddddocr识别数字,比较大小,再用adb命令模拟安卓手势实现><

python">import os
import ddddocr
from time import sleep
from PIL import Imagedef take_screenshot(path):"""从设备截取屏幕并保存到指定路径。"""os.system(f'adb shell screencap -p > {path}')# 读取截取的屏幕截图并替换行结束符with open(path, 'rb') as f:return f.read().replace(b'\r\n', b'\n')def process_image(image_path, crop_area):"""打开图片,裁剪并返回裁剪后的图片。"""with Image.open(image_path) as img:return img.crop(crop_area)def extract_text(img):"""提取图片中的文本。"""with open(img, 'rb') as f:img_bytes = f.read()res = ocr.classification(img_bytes)return res.replace(' ', '').replace('\n', '')def compare_numbers(x, y):"""比较两个数字并相应地执行滑动操作。"""try:x_int, y_int = int(x), int(y)if x_int > y_int:print(f"{x} > {y}")os.system("adb shell input swipe 450 1800 850 1900 1")os.system("adb shell input swipe 850 1900 450 2000 1")else:print(f"{x} < {y}")os.system("adb shell input swipe 850 1800 450 1900 1")os.system("adb shell input swipe 450 1900 850 2000 1")except ValueError:print("数字格式无效。")def main():"""主程序逻辑。"""screenshot_path = 'screenshot.png'# 截取屏幕并保存screenshot = take_screenshot(screenshot_path)with open(screenshot_path, 'wb') as f:f.write(screenshot)# 定义裁剪区域(左,上,右,下)分别是两个数字在图片中的区域坐标crop_areas = [(330, 720, 530, 880),(730, 720, 930, 880)]cropped_images = []for i, crop_area in enumerate(crop_areas, start=1):cropped_image = process_image(screenshot_path, crop_area)cropped_image_path = f"screenshot{i}.png"cropped_image.save(cropped_image_path)cropped_images.append(cropped_image_path)# 从裁剪后的图片中提取文本texts = [extract_text(image) for image in cropped_images]# 比较提取的数字compare_numbers(texts[0], texts[1])if __name__ == '__main__':ocr = ddddocr.DdddOcr(show_ad=False)while True:main()sleep(0.2)


http://www.ppmy.cn/news/1537292.html

相关文章

springboot 前后端处理日志

为了实现一个高效且合理的日志记录方案&#xff0c;我们需要在系统架构层面进行细致规划。在某些情况下&#xff0c;一个前端页面可能会调用多个辅助接口来完成整个业务流程&#xff0c;而并非所有这些接口的交互都需要被记录到日志中。为了避免不必要的日志开销&#xff0c;并…

谷歌AI大模型Gemini API快速入门及LangChain调用视频教程

1. 谷歌Gemini API KEY获取及AI Studio使用 要使用谷歌Gemini API&#xff0c;首先需要获取API密钥。以下是获取API密钥的步骤&#xff1a; 访问Google AI Studio&#xff1a; 打开浏览器&#xff0c;访问Google AI Studio。使用Google账号登录&#xff0c;若没有账号&#xf…

充电宝租赁管理系统网站毕业设计SpringBootSSM框架开发

目录 1. 概述 2. 技术选择与介绍 3. 系统设计 4. 功能实现 5. 需求分析 1. 概述 充电宝租赁管理系统网站是一个既实用又具有挑战性的项目。 随着移动设备的普及和人们日常生活对电力的持续依赖&#xff0c;充电宝租赁服务已成为现代都市生活中的一项重要便利设施。它不仅为…

机器学习与神经网络:开启物理学的新篇章

近日&#xff0c;2024年诺贝尔物理学奖的颁发引发了全球热议&#xff0c;尤其是首次将这项传统上授予物理学研究者的奖项颁给了机器学习与神经网络领域的科学家。这一举动标志着人工智能技术&#xff0c;尤其是深度学习技术&#xff0c;正在深入影响科学的各个领域&#xff0c;…

GC1277和灿瑞的OCH477优势分析 可以用于电脑散热风扇,视频监控和图像处理的图像信号处理器中

GC1277和灿瑞的OCH477是两款用于视频监控和图像处理的图像信号处理器&#xff08;ISP&#xff09;。在对比这两款产品时&#xff0c;可以从以下几个方面考虑它们的优势和特点&#xff1a; 1. 图像处理能力 GC1277&#xff1a;通常具有更强的图像处理算法&#xff0c;支持多种…

npm依赖版本锁定详解

npm中有一个package-lock.json的文件&#xff0c;即npm依赖锁文件&#xff0c;用来描述npm依赖生成的确切树&#xff0c;这样不管你的依赖有何种更新&#xff0c;都会按照这个确切树来安装使用。 不同的包管理工具对应不同的锁文件&#xff1a; ● npm > package-lock.json…

使用 Docker 部署前端项目:Vue 和 React 结合 Nginx 实现静态文件托管

使用 Docker 部署前端项目&#xff1a;Vue 和 React 结合 Nginx 实现静态文件托管 Web 开发中&#xff0c;将前端项目&#xff08;例如 Vue 或 React 应用&#xff09;打包后通过 Docker 容器和 Nginx 部署是非常常见的方式。它不仅简化了部署流程&#xff0c;还能确保在不同环…

科研绘图系列:R语言绘制SCI文章图2

文章目录 介绍加载R包导入数据图a图b图d系统信息介绍 文章提供了绘制图a,图b和图d的数据和代码 加载R包 library(ggplot2) library(dplyr) library(readxl) library(ggpmisc)导入数据 数据可从以下链接下载(画图所需要的所有数据): 百度网盘下载链接: https://pan.baid…