首页 > Python资料 博客日记
小袁口算python
2024-11-03 06:00:04Python资料围观31次
这篇文章介绍了小袁口算python,分享给大家做个参考,收藏Python资料网收获更多编程知识
pyhton纯视觉方案,按照模拟器位置捕捉截图进行比较,为两张截图方案,自行更改位置,需要下载pytesseract ocr到本机,同时需更改捕捉屏幕的区域,go字样的区域,仅供学习,刷速度此方案不可行
import cv2
import pytesseract
import pyautogui
import numpy as np
import time
from concurrent.futures import ThreadPoolExecutor
# Tesseract OCR路径配置
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
def capture_screenshot(region=None):
# 捕捉屏幕截图
screenshot = pyautogui.screenshot(region=region) # 捕捉指定区域
img = np.array(screenshot) # 转换为numpy数组
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) # 转换为BGR格式
return img
def extract_text_from_image(img):
# 图像中提取文本
custom_config = r'--oem 3 --psm 6' # Tesseract配置
text = pytesseract.image_to_string(img, config=custom_config)
print("识别出的文本:", text) # 调试输出
return text.strip()
def wait_for_go(region):
# 等待识别到go字样后继续执行
print("等待识别到 'go' 字样...")
while True:
img = capture_screenshot(region)
text = extract_text_from_image(img)
if 'go' in text.lower(): # 如果识别到 "go",开始执行主程序
print("'go' 已识别,开始执行主程序")
break
time.sleep(0.1) # 每秒检查一次
def extract_number_from_image(img):
# 从图像中提取数字
custom_config = r'--oem 3 --psm 6 outputbase digits' # Tesseract配置
details = pytesseract.image_to_data(img, output_type=pytesseract.Output.DICT, config=custom_config)
# 提取识别出的文本信息
numbers = []
for i, text in enumerate(details['text']):
if text.isdigit(): # 只提取数字
numbers.append(int(text))
print("提取的数字:", numbers) # 调试输出
return numbers
def draw_comparison_sign(result, start_position):
# 模拟鼠标滑动绘制比较符号
pyautogui.moveTo(start_position[0], start_position[1]) # 移动到起始位置
# 绘制符号
if result == ">":
# 绘制大于号
pyautogui.dragTo(210, 710, button='left', duration=0.00001) # 上半部分
pyautogui.dragTo(200, 720, button='left', duration=0.00001) # 下半部分
elif result == "<":
# 绘制小于号
pyautogui.dragTo(190, 710, button='left', duration=0.00001) # 上半部分
pyautogui.dragTo(200, 720, button='left', duration=0.00001) # 下半部分
def process_image(region):
# 捕捉图像并提取数字
img = capture_screenshot(region)
numbers = extract_number_from_image(img)
return numbers
def main(region1, region2):
#主循环 捕捉、识别、比较并绘制符号
iterations = 13 # 设定循环次数
with ThreadPoolExecutor(max_workers=2) as executor: # 创建线程池,设置2个并发工作线程
for i in range(iterations):
# 使用线程并行处理两个图像捕捉与数字提取
future1 = executor.submit(process_image, region1)
future2 = executor.submit(process_image, region2)
# 获取提取结果
numbers1 = future1.result()
numbers2 = future2.result()
if len(numbers1) > 0 and len(numbers2) > 0:
num1 = numbers1[0] # 假设第一张图像提取第一个数字
num2 = numbers2[0] # 假设第二张图像提取第一个数字
print(f"第一张识别到数字: {num1},第二张识别到数字: {num2}")
# 比较数字并绘制符号
if num1 > num2:
draw_comparison_sign(">", (200, 700)) # 在指定位置绘制大于号
elif num1 < num2:
draw_comparison_sign("<", (200, 700)) # 在指定位置绘制小于号
else:
print("两个数字相等,无需绘制符号。")
time.sleep(0.3) # 暂停0.5秒再进行下一次截图
# 示例:定义捕捉屏幕的区域
region1 = (100, 300, 100, 100) # 第一张图像捕捉区域 (x, y, width, height)
region2 = (290, 310, 100, 100) # 第二张图像捕捉区域 (x, y, width, height)
# 定义 'go' 字样的区域
go_region = (190, 425, 120, 65) # 假设 'go' 字样出现在这个区域 (x, y, width, height)
# 等待识别到 'go' 字样后启动主程序
wait_for_go(go_region)
# 启动主程序
try:
main(region1, region2)
except KeyboardInterrupt:
print("程序已停止")
except Exception as e:
print("发生错误:", e)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj