遮罩模板比對(忽略背景)

一般模板比對會計分模板的*每個*像素,因此從某背景裁切出的圖示無法比對到同一圖示在不同背景上的情形—— 工具列圖示在 hover 與閒置按鈕上、游標疊在任意內容上、Logo 在主題化表面上。match_masked 只計算你標記為 相關的像素:明確的灰階 ``mask``(非零 = 使用),或——若傳入 RGBA 模板——其 alpha 通道。透明 /「不在乎」的 像素就不會再把分數拉低。

它沿用與 具信心分數的模板比對 相同的 Match 結果(左上角、尺寸、scorecenter),並在可注入的 haystack``(ndarray / 路徑 / PIL)上執行,因此可對合成陣列做單元測試。比對使用 OpenCV 的遮罩 ``TM_CCORR_NORMED``(唯一能接受遮罩且不產生 NaN 的正規化度量);非有限值會被歸零。OpenCV + NumPy 透過 ``je_open_cv 引入;不匯入 PySide6

無頭 API

from je_auto_control import match_masked, match_masked_all

# 帶透明度的 PNG 圖示——其 alpha 自動作為遮罩。
hit = match_masked("save_icon.png", min_score=0.9)
if hit:
    click(*hit.center)

# 明確遮罩:只比對 mask.png 的白色像素。
for hit in match_masked_all("cursor.png", mask="cursor_mask.png",
                            min_score=0.95):
    print(hit.x, hit.y, hit.score)

match_masked 回傳達到 min_score 的單一最佳 Match``(或 ``None);``match_masked_all`` 回傳每個 比對,以非極大值抑制移除重疊,分數由高到低,上限 max_results。遮罩形狀與模板不符會丟出 ValueError

執行器命令

AC_match_masked / AC_match_masked_all 接受 template``(及選用 ``mask)以及 min_score / region``(*all* 形式另有 ``max_results / nms_iou)。它們以 MCP 工具 ac_match_masked / ac_match_masked_all 以及 Script Builder 中 Image 分類下的命令提供。