共计 1062 个字符,预计需要花费 3 分钟才能阅读完成。
CV 在自动化脚本中的核心作用
计算机视觉(CV)在自动化脚本中主要承担 环境感知 和决策支持 两大功能。典型应用包括:

- UI 元素定位:替代传统坐标点击,通过图标 / 文字识别实现精准操作
- 验证码破解:识别扭曲文本或滑动验证码的缺口位置
- 游戏自动化:检测特定画面状态(如血条、任务提示)触发对应操作
- 工业质检:在生产线上识别产品缺陷并记录
主流 CV 库选型指南
- OpenCV:
- 优势:跨平台支持完善,提供 C ++/Python/Java 接口
-
劣势:深度学习模块需单独编译
-
Pillow:
- 适用场景:简单的图像处理(裁剪 / 滤镜)
-
性能局限:不适用于复杂识别任务
-
Tesseract:
- 专项能力:OCR 文字识别准确率可达 90%+
- 配置要点:需额外训练语言包提升特定场景效果
图像识别实战示例
以下是通过 OpenCV 实现按钮识别的完整代码:
import cv2
import numpy as np
def find_button(template_path, screenshot_path):
# 读取模板和截图
template = cv2.imread(template_path, 0)
screen = cv2.imread(screenshot_path, 0)
# 模板匹配
res = cv2.matchTemplate(screen, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8 # 相似度阈值
loc = np.where(res >= threshold)
# 返回所有匹配位置
return list(zip(*loc[::-1]))
# 使用示例
matches = find_button('login_button.png', 'current_screen.png')
print(f"找到 {len(matches)} 个匹配项")
关键参数说明:
– TM_CCOEFF_NORMED:标准化相关系数匹配法
– 阈值 0.8:可根据实际场景调整敏感度
性能优化四步法
- 图像预处理:
- 灰度化减少计算量
-
高斯模糊消除噪点
-
区域限定:
-
通过 ROI 裁剪只处理关键区域
-
多尺度检测:
-
使用
cv2.resize应对不同分辨率 -
异步处理:
- 将 CV 任务放入独立线程避免阻塞主流程
生产环境避坑指南
- 光照适应:
-
增加 HSV 颜色空间转换应对光线变化
-
动态元素:
-
对闪烁 / 移动元素增加延时检测
-
跨平台测试:
- 在 Windows/macOS/Linux 分别验证渲染差异
总结建议
对于中小型自动化项目,推荐 OpenCV+Pillow 的组合方案。关键是要建立完善的测试用例库,包含各种边界场景的样本图像。当识别准确率下降时,优先考虑调整预处理参数而非立即更换算法。
正文完
