卡尺工具:测量边缘距离与尺寸¶
在图上画一个方向明确的矩形,软件沿着它扫过去,找出两条边缘,量它们之间的距离,再和你给的参考值比。间隙宽度、贴合错位量、零件宽度、标签到边沿的距离,都可以这样量。
它和别的检测项还有一点不同:导入标定文件之后,它能把像素换算成毫米,并且这个毫米值可以设成自定义变量发给 PLC。需要把"实测尺寸"回传给上位机时,用它。
前置条件¶
- 检测方案里已经建好标签外框,模板图已完成旋转拉伸。
- 要量的两条边缘在图上看得出明暗变化。边缘糊成一片、人眼都分不清的地方量不了。
- 想要毫米值,需要先做过标定,得到一个记录像素当量的 JSON 文件。
它包含哪些检测框¶
只有一个:"检测参数"。双击它打开的窗口有五个页签:
| 页签 | 管什么 |
|---|---|
| "设置" | 边缘极性、对比度门槛、参考距离与阈值、标定与补偿。日常调参都在这一页 |
| "区域" | 卡尺矩形的形状与坐标,可以用数字精确摆位 |
| "计分" | 边缘评分曲线与表格,用来看软件为什么挑中了这两条边 |
| "图形" | 一排显示开关,控制结果图上画什么 |
| "结果" | 找到的边缘明细表,底部还有"当前距离(px): " |

新建与画框¶
- 切到"编辑模式"。
- 点工具栏"新建检测项",类型选"卡尺工具",确定。
- 在模板图上拖出卡尺矩形。方向很重要:矩形的长边方向就是扫描方向,要让它垂直穿过你要量的那两条边缘,而不是和边缘平行。
- 矩形宽度(垂直于扫描方向那一边)决定取多宽的一条带来平均。边缘干净就窄一点,有噪声就宽一点,让结果更稳。
- 点"训练工程"。
- 双击"检测参数",点窗口左上角的运行按钮跑一次,看"结果"页里找到了几条边。
必须正好找到两条边
卡尺固定取两条边缘算距离。找到的边不是两条(0 条、1 条、3 条以上)时直接判 NG。所以矩形要尽量只罩住这两条边,别把第三条边也框进去。
参数说明¶
"设置"页 —— 边缘怎么找¶
这一页有几个标签目前还是英文,含义如下。
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "双边缘模式" | 整组设置的标题 | |
| "边缘1" / "边缘2" | 分别设定第一条、第二条边缘的极性(明暗过渡方向),下拉三选一(由亮到暗 / 由暗到亮 / 全部) | 沿扫描方向看:从暗变亮选"由暗到亮",从亮变暗选"由亮到暗",不确定就选"全部" |
| "由暗到亮"(Dark to Light) | 暗 → 亮的过渡 | |
| "由亮到暗"(Light to Dark) | 亮 → 暗的过渡 | |
| "全部"(All) | 两种都接受 | 默认值。先用它跑通,再按实际情况收紧,收紧了更不容易挑错边 |
| "对比度阈值"(Contrast Threshold) | 边缘对比度门槛,低于它的过渡不算边缘 | 挑到杂边就往上调;边缘太浅找不到就往下调。配合"计分"页的曲线看最直观 |
| "滤波半宽(像素)"(Filter Half Pixel) | 平滑窗口的半宽,值越大越平滑 | 图像有噪点、边缘毛糙时往上调;调太大会把真实边缘抹平,位置也会变钝 |
| "最大结果数"(Maximum Number of Results) | 最多返回几条边缘 | 这一项固定为 2,不可修改,只读显示 2 |
"设置"页 —— 距离怎么判¶
| 参数 | 含义 | 调参建议 |
|---|---|---|
| "参考距离(px)" | 标准品上这两条边应该相距多少像素 | 别凭空填。先跑几件良品,看"结果"页底部的"当前距离(px): ",取中间值填进来 |
| "距离阈值(px)" | 允许偏离参考距离多少像素 | 实测距离与参考距离之差在这个范围内判 PASS,超出判 NG。先按良品的波动范围给,再收紧 |
| "参考距离(mm)" | 参考距离换算成毫米 | 只读。没导入标定文件时是空白 |
| "距离阈值(mm)" | 距离阈值换算成毫米 | 只读,同上 |
| "结果补偿(mm)" | 给毫米结果加一个固定偏移 | 用卡尺量出来的值和卡尺实物 / 三坐标量出来的值有系统性差值时,把差值填这里补平 |
| "标定后结果(mm)" | 本次的毫米结果,已经含补偿 | 只读。没跑过时显示"null" |
| "导入标定文件" | 选一个 JSON 标定文件 | 文件里必须有像素当量字段,导入成功会提示换算系数是多少 mm/px |
毫米值怎么算出来的
毫米结果 = 实测像素距离 × 标定系数 + "结果补偿(mm)"。没导入过标定文件时,对外输出的毫米值一律是 0;判 NG 时输出也是 0。所以要把尺寸发给 PLC,必须先导入标定文件、把这一项判到 PASS。
"区域"页¶
形状下拉框只有两个选项:用整幅输入图,或者用一个可旋转矩形。卡尺默认用可旋转矩形,并且在图上拖框就是改它。需要精确摆位时,在这里直接填坐标、边长和旋转角。
"计分"页 / "图形"页 / "结果"页¶
| 页签 | 里面有什么 | 怎么用 |
|---|---|---|
| "计分" | 边缘强度沿扫描方向的曲线,和对应的数值表 | 调"对比度阈值"时看它:曲线上有几个明显的峰,门槛应该卡在真实边缘的峰和杂峰之间 |
| "图形" | 一排显示开关,控制结果图上画不画找到的边、区域、投影曲线、滤波曲线等 | 调试时全打开,看清楚软件到底挑中了哪两条边 |
| "结果" | 找到的每条边的位置、分数等明细,底部是"当前距离(px): " | 定"参考距离(px)"就看这里的当前距离 |
训练与调试¶
- 画好卡尺矩形,让长边垂直穿过两条目标边缘 → 点"训练工程"。
- 双击"检测参数",点运行按钮,到"结果"页确认正好找到两条边,并记下"当前距离(px): "。
- 换几件良品(用"打开调试文件夹"过一批实拍图),记下每件的当前距离,看波动有多大。
- 把中间值填进"参考距离(px)",把波动范围略放宽后填进"距离阈值(px)"。
- 要输出毫米值:点"导入标定文件"选好 JSON,确认"参考距离(mm)"和"标定后结果(mm)"有数了;必要时用"结果补偿(mm)"和实物量具对齐。
- 要把数值发给上位机:在树里右键这个卡尺检测项 →"设为自定义变量",给它取个变量名,再到通讯配置里把这个变量挂出去。
- 点"保存工程"。
常见误判与处理¶
| 现象 | 原因 | 处理 |
|---|---|---|
| 一直判 NG,"结果"页里边缘数不是 2 | 卡尺罩住的边多于或少于两条 | 缩短 / 移动卡尺矩形,只罩住目标那两条边 |
| 找不到边缘 | "对比度阈值"太高,或边缘本身太浅 | 先降门槛;降到很低还找不到,就是取像问题——加对比度、换打光角度 |
| 挑中了旁边的杂边 | 门槛太低,或极性设成了"全部" | 提高"对比度阈值";把"边缘1""边缘2"按实际明暗方向分别设死 |
| 距离值每件跳动很大 | 卡尺矩形太窄,单行噪声直接影响结果;或边缘毛糙 | 把矩形加宽一点;适当加大"滤波半宽(像素)" |
| 距离整体偏了一个固定量 | 卡尺量的是边缘中心位置,和实物量具的基准不一致 | 用"结果补偿(mm)"补平 |
| "标定后结果(mm)"一直是"null" | 这一项还没跑过 | 点运行按钮跑一次 |
| 毫米值一直是 0 | 没导入标定文件,或这一次判了 NG | 导入标定文件;先把判定调到 PASS |
| 提示输入图片不是灰度图 | 卡尺只吃灰度图 | 检查检测方案的取像设置 |
| 卡尺框跟着产品跑偏 | 标签外框定位没跟上 | 回标签外框调定位 |