一、工具核心功能
这是康耐视 VisionPro 视觉软件中的书页 / 页码识别工具 ,核心作用:通过视觉检测匹配不同页码的特征,自动判断当前画面是第几页,无匹配页码时输出未知状态,用于自动化产线的书页 / 文档分页识别场景。
二、工具原理
- 工具内置6 组页码匹配检测单元(对应 Page1~Page6)
- 每组检测单元输出一个结果计数(Results_Count) :
- 计数>0 → 该页码匹配成功
- 计数 = 0 → 该页码匹配失败
- 脚本通过多分支条件判断,依次检测 6 组计数,输出对应页码
三、ToolBlock 脚本完整解析
1. 脚本完整代码
c#
// 第一步:判断第1页是否匹配成功(结果计数大于0)
if(Inputs.Results_Count > 0)
{
Outputs.Output = "Page No:1"; // 输出:第1页
}
// 第二步:判断第2页是否匹配成功
else if(Inputs.Results_Count1 > 0)
{
Outputs.Output = "Page No:2"; // 输出:第2页
}
// 第三步:判断第3页是否匹配成功
else if(Inputs.Results_Count2 > 0)
{
Outputs.Output = "Page No:3"; // 输出:第3页
}
// 第四步:判断第4页是否匹配成功
else if(Inputs.Results_Count3 > 0)
{
Outputs.Output = "Page No:4"; // 输出:第4页
}
// 第五步:判断第5页是否匹配成功
else if(Inputs.Results_Count4 > 0)
{
Outputs.Output = "Page No:5"; // 输出:第5页
}
// 第六步:判断第6页是否匹配成功
else if(Inputs.Results_Count5 > 0)
{
Outputs.Output = "Page No:6"; // 输出:第6页
}
// 所有页码都未匹配到
else
{
Outputs.Output = "NoKnow"; // 输出:未知页码
}
2. 核心变量说明
表格
| 输入变量 | 含义 | 对应页码 |
|---|---|---|
| Inputs.Results_Count | 第 1 组检测结果计数 | Page1 |
| Inputs.Results_Count1 | 第 2 组检测结果计数 | Page2 |
| Inputs.Results_Count2 | 第 3 组检测结果计数 | Page3 |
| Inputs.Results_Count3 | 第 4 组检测结果计数 | Page4 |
| Inputs.Results_Count4 | 第 5 组检测结果计数 | Page5 |
| Inputs.Results_Count5 | 第 6 组检测结果计数 | Page6 |
| Outputs.Output | 脚本最终输出结果 | 页码 / 未知状态 |
3. 执行逻辑(顺序判断)
- 从上到下依次检测:先判断 Page1 → 再 Page2 → ... → 最后 Page6
- 互斥判断 :只要某一个条件满足(匹配成功),直接输出对应页码,不再执行后续判断
- 兜底逻辑 :所有条件都不满足,输出
NoKnow(未知)
四、效果与应用场景
- 效果 :视觉相机拍摄书页 → 工具匹配特征 → 脚本自动输出
Page No:X/NoKnow - 应用:书本装订、文档分拣、试卷分页、自动化翻页检测等产线
五、脚本优缺点
优点
- 逻辑简单直观,新手易理解、易修改
- 适配 6 页固定场景,运行稳定
- 兜底判断避免无输出报错
缺点
- 扩展性差:增加 / 减少页码需要手动修改代码
- 代码冗余:重复判断逻辑多
- 顺序固定:必须按 1-6 页顺序判断
总结
- 这是 VisionPro基于匹配计数的页码识别方案 ,核心是
Results_Count结果判断 - 脚本用if-else 多分支实现 6 页顺序检测,输出对应页码
- 适合固定 6 页的简单分页检测场景,修改便捷、稳定性强
效果展示:


工具:

脚本:
ToolBlock脚本代码:
if(Inputs.Results_Count > 0)
{
Outputs.Output = "Page No:1";
}
else if(Inputs.Results_Count1 > 0)
{
Outputs.Output = "Page No:2";
}
else if(Inputs.Results_Count2 > 0)
{
Outputs.Output = "Page No:3";
}
else if(Inputs.Results_Count3 > 0)
{
Outputs.Output = "Page No:4";
}
else if(Inputs.Results_Count4 > 0)
{
Outputs.Output = "Page No:5";
}
else if(Inputs.Results_Count5 > 0)
{
Outputs.Output = "Page No:6";
}
else
{
Outputs.Output = "NoKnow";
}