如何用Python OpenCV涂黑游戏截图中的UI元素区域
如何用OpenCV涂黑游戏截图中的UI区域
你可以直接通过操作OpenCV图像矩阵的区域切片来实现涂黑指定UI区域的需求,具体操作如下:
- 把所有需要处理的UI区域统一存入列表,方便批量遍历处理
- 对每个UI区域,计算对应的图像矩阵索引范围(注意OpenCV图像的索引顺序是**[行(y), 列(x)]**,对应你定义的
top和left参数) - 将该区域内的所有像素值设置为黑色(BGR格式下为
(0, 0, 0))
完整代码示例
import cv2 # 读取游戏窗口截图 client_window = cv2.imread('client_window.png') # 定义需要涂黑的UI区域 ui_chatbox = {'left': 0, 'top': 746, 'width': 520, 'height': 167} ui_minimap = {'left': 878, 'top': 31, 'width': 212, 'height': 207} ui_inventory = {'left': 849, 'top': 576, 'width': 241, 'height': 337} # 将UI区域存入列表,方便批量处理 ui_regions = [ui_chatbox, ui_minimap, ui_inventory] # 遍历每个UI区域,执行涂黑操作 for ui in ui_regions: # 计算区域的边界坐标 x_start = ui['left'] y_start = ui['top'] x_end = x_start + ui['width'] y_end = y_start + ui['height'] # 涂黑该区域(OpenCV图像切片为[y_start:y_end, x_start:x_end]) client_window[y_start:y_end, x_start:x_end] = (0, 0, 0) # 可选:保存处理后的图像 cv2.imwrite('game_view_only.png', client_window)
补充说明
- 如果你的UI坐标有可能超出图像尺寸,可以在赋值前添加边界检查,避免索引错误:
# 确保坐标在图像范围内 x_start = max(0, x_start) y_start = max(0, y_start) x_end = min(client_window.shape[1], x_end) y_end = min(client_window.shape[0], y_end) - OpenCV读取的图像是BGR通道顺序,黑色用
(0,0,0)表示,和RGB格式一致,无需额外转换。
内容的提问来源于stack exchange,提问作者ktom
相关产品推荐
相关产品推荐

