線條 / 網格 / 分隔線偵測(Hough)
grid_locator 把*已找到的*元素框分群成網格;它無法從原始像素找出表格 / 試算表的格線或 UI 分隔線,而
shape_locator 只找封閉矩形。find_lines、find_grid 與 find_separators 以 Canny + 機率 Hough 轉換
偵測直線段、分類為水平 / 垂直 / 斜向、還原表格的列與欄座標(及儲存格),並回傳長分隔線的位置——讓腳本能在無模板下
定址「第 3 列、第 2 欄」或在分隔處切分面板。
在可注入的 haystack``(ndarray / 路徑 / PIL)上執行,因此可對合成陣列做無頭測試。``cv2.HoughLinesP 屬於
OpenCV 核心;OpenCV + NumPy 透過 je_open_cv 引入。不匯入 PySide6。
無頭 API
from je_auto_control import find_lines, find_grid, find_separators
for seg in find_lines(min_length=80, orientation="vertical"):
print(seg["x1"], seg["y1"], seg["x2"], seg["y2"], seg["length"])
grid = find_grid(min_length=120)
cell = grid["cells"][0] # 第 0 列、第 0 欄的 {x, y, width, height}
click(cell["x"] + cell["width"] // 2, cell["y"] + cell["height"] // 2)
dividers = find_separators(axis="horizontal") # 各格線的 [y0, y1, ...]
find_lines 為每段回傳 {x1, y1, x2, y2, angle, length, orientation},最長者優先;傳入非 any 的
orientation 只保留該類。find_grid 將水平格線分群為列座標、垂直格線分群為欄,回傳 {rows, cols, cells}
(儲存格為相鄰格線之間的矩形)。find_separators 回傳沿 axis 的長分隔線合併後座標。空白畫面不產生線條 / 儲存格。
執行器命令
AC_find_lines``(``min_length / max_gap / orientation / region → {count, lines})、
AC_find_grid``(``min_length / tol / region → {rows, cols, cells})與 AC_find_separators
(axis / min_length / tol / region → {count, axis, coordinates})。它們以 MCP 工具
ac_find_lines / ac_find_grid / ac_find_separators 以及 Script Builder 中 Image 分類下的命令提供。