小猿口算脚本

.鱼子酱 2024-10-17 15:35:01 阅读 80

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

<code>import os

import ddddocr

from time import sleep

from PIL import Image

def 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)

 

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。