You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Tesseract无法识别Valorant截图中的数字,求解决方案

解决Valorant剩余时间识别问题

一、先做图片预处理优化

游戏里的数字大多带半透明、抗锯齿效果,或是背景复杂,直接丢给Tesseract很容易识别失败,先给裁剪后的图片做几步预处理:

  • 转灰度图:砍掉颜色干扰
  • 阈值二值化:把数字和背景硬分开,让数字边缘更清晰
  • 去噪声:清理小杂点,避免干扰识别

修改后的代码加入预处理步骤:

import time
import pyautogui
import cv2
import pytesseract

# 截图与裁剪流程
time.sleep(2)
myScreenshot = pyautogui.screenshot()
myScreenshot.save(r'Path\screenshot.png')
raw = cv2.imread("Path/screenshot.png")
y=10
x=1160
h=100
w=200
cropped = raw[y:y+h, x:x+w]
cv2.imwrite("Path/Time.png", cropped)

# 图片预处理
img = cv2.imread("Path/Time.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化(如果识别效果差,可以调整127这个阈值)
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 去除小噪声
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
cleaned = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)

# Tesseract识别配置
custom_config = r'--oem 3 --psm 10 -c tessedit_char_whitelist=0123456789:'
string = pytesseract.image_to_string(cleaned, config=custom_config)
# 去掉多余空白字符
string = string.strip()

print(string)

二、调整Tesseract的识别配置

  1. --oem 3:用默认OCR引擎模式,兼容性更好
  2. --psm 10:强制识别单个字符,适配时间数字的单元素特性
  3. tessedit_char_whitelist=0123456789::只允许识别数字和冒号,大幅降低识别错误率

三、额外优化点

  • 收窄裁剪区域:确保只框住时间数字,别带多余的游戏界面元素
  • 微调阈值:如果二值化后数字还是不清晰,试着把代码里的127改成更高或更低的数值
  • 更新Tesseract:旧版本对特殊游戏字体支持差,换成最新版试试

内容的提问来源于stack exchange,提问作者V0rteX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:50:36