"""ROI 示教工具:显示一张代表图,人工画一次矩形,存成 roi.hobj。运行一次即可。""" import halcon as ha IMG_DIR = r"C:\工作文档\2025.10.03_精度实验数据分析\两种找圆算法对比\初始状态-往复-右侧上视左标定片阵列Mark定位" ROI_FILE = r"C:\workspace\agent-studio\halcon-001\roi.hobj" # 取目录里第一张 png 作为代表图 files = ha.list_files(IMG_DIR, "files") pngs = sorted(ha.tuple_regexp_select(files, r"\.png$")) if not pngs: raise SystemExit("目录里没有 png") img = ha.read_image(pngs[0]) width, height = ha.get_image_size(img) width, height = width[0], height[0] # 开窗口,映射到整幅图坐标(这样画出来的框就是图像坐标) win = ha.open_window(0, 0, 1024, 768, 0, "visible", "") ha.set_part(win, 0, 0, height - 1, width - 1) ha.disp_obj(img, win) ha.set_color(win, "green") print("请在弹出的窗口里用鼠标左键拖出 ROI 矩形,松开即可 ...", flush=True) row1, col1, row2, col2 = ha.draw_rectangle1(win) # 阻塞,等人工画 rect = ha.gen_rectangle1(row1, col1, row2, col2) ha.write_region(rect, ROI_FILE) print(f"ROI 已保存: {ROI_FILE}") print(f"矩形坐标 Row1={row1:.1f} Col1={col1:.1f} Row2={row2:.1f} Col2={col2:.1f}") ha.close_window(win)