首页 > 编程语言 >Python截图OCR+鼠标拖拽实现小猿口算比大小自动答题

Python截图OCR+鼠标拖拽实现小猿口算比大小自动答题

时间:2024-10-11 18:35:59浏览次数:8  
标签:pyautogui 截图 screenshot Python 50 window 小猿口 import OCR

我的第一个python项目

import time
import pyautogui
from PIL import Image
from paddleocr import PaddleOCR

ActOCR = PaddleOCR()

while True:
    # 获取指定坐标的截图
    def capture_screenshot_at_coordinates(x1, y1, x2, y2):
        # 获取整个屏幕的截图
        screenshot = pyautogui.screenshot()
        # 裁剪出指定坐标范围内的区域
        region = screenshot.crop((x1, y1, x2, y2))
        return region

    # 开始截图
    screenshot = capture_screenshot_at_coordinates(110, 320, 240, 400)
    screenshot.save('number1.png')
    screenshot = capture_screenshot_at_coordinates(320, 320, 410, 400)
    screenshot.save('number2.png')

    # 文字识别
    ocrNum1 = ActOCR.ocr(r'C:\Users\him69\Desktop\projects\xiaoyuankousuan\number1.png')
    NumberStr1 = ocrNum1[0][0][1][0]
    ocrNum2 = ActOCR.ocr(r'C:\Users\him69\Desktop\projects\xiaoyuankousuan\number2.png')
    NumberStr2 = ocrNum2[0][0][1][0]
    Number1 = int(NumberStr1)
    Number2 = int(NumberStr2)

    # 查找模拟器窗口的标题,假设标题为“雷电模拟器”
    window = pyautogui.getWindowsWithTitle("雷电模拟器")[0]
    x, y, width, height = window.left, window.top, window.width, window.height

    # 拖动
    def fast_drag(start_x, start_y, end_x, end_y):
        pyautogui.moveTo(start_x, start_y)
        pyautogui.dragTo(end_x, end_y, duration=0.15)  # 可以根据需要调整 duration 的值以控制速度
    if Number1 < Number2:
        print("<")
        fast_drag(x + 250, y + 650, x + 150, y + 750)
        fast_drag(x + 150+50, y + 750-50, x + 250+50, y + 850-50)
    else:
        print(">")
        fast_drag(x + 150, y + 650, x + 250, y + 750)
        fast_drag(x + 250-50, y + 750-50, x + 150-50, y + 850-50)

    print("Number1 is: "+NumberStr1)
    print("Number2 is: "+NumberStr2)
    time.sleep(0.4)

速度不够快,直接被大学生秒杀了,后面试试抓包

标签:pyautogui,截图,screenshot,Python,50,window,小猿口,import,OCR
From: https://www.cnblogs.com/xiins/p/18459047

相关文章

  • Python从0到100(六十二):机器学习实战-预测波士顿房价
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • 基于yolov8、yolov5的果蔬检测系统(含UI界面、数据集、训练好的模型、Python代码)
    项目介绍项目中所用到的算法模型和数据集等信息如下:算法模型:  yolov8、yolov8+SE注意力机制或yolov5、yolov5+SE注意力机制,直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有GPU,无法自行训练。数据集:  网上下载的数据集,格式都已......
  • 简易学生信息管理系统(Python版)
    一、系统简介实现一个学生信息的管理系统:主要功能有:添加学生信息删除学生信息修改学生信息查询学生信息显示学生信息退出当前系统二、步骤分析显示功能界面用户输入功能序号对不同序号的功能实现具体函数(3.1定义函数、3.2调用函数)三、需求实现显示......
  • Python办公软件自动化,5分钟掌握openpyxl操作
    今天给大家分享一篇用openpyxl操作Excel的文章。各种数据需要导入Excel?多个Excel要合并?目前,Python处理Excel文件有很多库,openpyxl算是其中功能和性能做的比较好的一个。接下来我将为大家介绍各种Excel操作。如果你正在学习Python并且找不到方向的话可以试试我这一份学习方法......
  • python 流程控制
    流程控制(一)条件控制if语句每条if语句的核心都是一个值为True或False的表达式,这种表达式称为条件测试。Python根据条件测试的值是True还是Flase来决定是否执行if语句中的代码。如果条件测试为True,Python就执行紧跟在if语句后的代码;如果为False,python就忽略......
  • Python中key参数的含义及用法
    我们在使用sorted()或map()函数的时候,都会看到里面有一个key参数其实这个key参数也存在于其他内置函数中(例如min()、max()等),那么我们今天就来了解一下key参数的含义以及用途吧!sorted()中的key我们来看下面这段代码:some_numbers=[3.14159,2.71828,......
  • Python多进程中并行编程与进程池
    Python的并行编程可以采用multiprocessing或mpi4py模块来完成。multiprocessing是Python标准库中的模块,实现了共享内存机制,也就是说,可以让运行在不同处理器核心的进程能读取共享内存。在基于共享内存通信的多进程编程中,常常通过加锁或类似机制来实现互斥。mpi4py库实现了消息传......
  • Python闭包和保存自由变量
    1.闭包:用函数代替类术语闭包(closure)来自抽象代数。抽象代数里,一集元素称为在某个运算(操作)之下封闭,如果将该运算应用于这一集合中的元素,产出的仍然是该集合中的元素。然而在Python社区中还用术语“闭包”表述于此一个毫不相干的概念。注意我们文章中所称的闭包为Python中的闭包......
  • Python 枚举 Enum
    Python中的枚举数据类型(Enum)_pythonenum-CSDN博客默认属性name和valuefromenumimportEnumclassWeekday(Enum):monday=1tuesday=2wednesday=3thirsday=4friday=5saturday=6sunday=7print(Weekday.wednesday)......
  • verilog文件到tb的简单python脚本
    使用python3verilog_to_tb.pytest.v需要注意的是,例化时并没有去掉最后的逗号,手动去除下。verilog_to_tb.pyimportsysimportredefread_file(file):withopen(file,'r')asf:lines=f.readlines()returnlinesdefmain():lines=read_file('......