使用 OpenCV 实现屏幕区域识别


OpenCV 是一个功能强大的计算机视觉库,可以用来实现屏幕区域的捕捉和识别。下面是一个简明的思路和示例,帮助你快速入门。

一、环境准备

安装 OpenCV 和 PyAutoGUI(用于截图):

1
pip install opencv-python pyautogui numpy

二、基本思路

  1. 使用 PyAutoGUI 截取屏幕指定区域的图像。
  2. 使用 OpenCV 对截图进行处理和识别,比如模板匹配、颜色识别、边缘检测等。

三、示例代码:截取屏幕区域并进行模板匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import cv2
import numpy as np
import pyautogui

# 截取屏幕区域 (left, top, width, height)
screenshot = pyautogui.screenshot(region=(100, 100, 300, 200))
screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)

# 读取模板图片
template = cv2.imread('template.png', cv2.IMREAD_COLOR)
template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)

# 转换截图为灰度图
screenshot_gray = cv2.cvtColor(screenshot, cv2.COLOR_BGR2GRAY)

# 模板匹配
result = cv2.matchTemplate(screenshot_gray, template_gray, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

threshold = 0.8
if max_val >= threshold:
top_left = max_loc
h, w = template_gray.shape
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(screenshot, top_left, bottom_right, (0, 255, 0), 2)
print("找到匹配区域,置信度:", max_val)
else:
print("未找到匹配区域")

# 显示结果
cv2.imshow('Screen Region Recognition', screenshot)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、扩展应用

  • 利用颜色空间转换与阈值分割实现颜色区域识别。
  • 结合 OCR 技术识别屏幕文字。
  • 结合鼠标事件,实现自动化操作。