VisionPro 书页查找工具 学习笔记

一、工具核心功能

这是康耐视 VisionPro 视觉软件中的书页 / 页码识别工具 ,核心作用:通过视觉检测匹配不同页码的特征,自动判断当前画面是第几页,无匹配页码时输出未知状态,用于自动化产线的书页 / 文档分页识别场景。

二、工具原理

  1. 工具内置6 组页码匹配检测单元(对应 Page1~Page6)
  2. 每组检测单元输出一个结果计数(Results_Count)
    • 计数>0 → 该页码匹配成功
    • 计数 = 0 → 该页码匹配失败
  3. 脚本通过多分支条件判断,依次检测 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. 执行逻辑(顺序判断)

  1. 从上到下依次检测:先判断 Page1 → 再 Page2 → ... → 最后 Page6
  2. 互斥判断 :只要某一个条件满足(匹配成功),直接输出对应页码,不再执行后续判断
  3. 兜底逻辑 :所有条件都不满足,输出NoKnow(未知)

四、效果与应用场景

  1. 效果 :视觉相机拍摄书页 → 工具匹配特征 → 脚本自动输出Page No:X/NoKnow
  2. 应用:书本装订、文档分拣、试卷分页、自动化翻页检测等产线

五、脚本优缺点

优点

  • 逻辑简单直观,新手易理解、易修改
  • 适配 6 页固定场景,运行稳定
  • 兜底判断避免无输出报错

缺点

  • 扩展性差:增加 / 减少页码需要手动修改代码
  • 代码冗余:重复判断逻辑多
  • 顺序固定:必须按 1-6 页顺序判断

总结

  1. 这是 VisionPro基于匹配计数的页码识别方案 ,核心是Results_Count结果判断
  2. 脚本用if-else 多分支实现 6 页顺序检测,输出对应页码
  3. 适合固定 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";

}

相关推荐
Lost of 程序猿2 小时前
用 YARP 为 .NET 微服务搭一座“立交桥“:路由转发与生产配置实践
c#·asp.net
点纭5 小时前
C 语言 第七章 常用函数(3)
c语言·开发语言·算法·oracle·c#
用户788477316346 小时前
用 .NET MAUI 一套 C# 同时出 Windows 和 Android:哪些是真能共享,哪些是 marketing
c#
Lost of 程序猿7 小时前
用 Quartz.NET 优雅地处理 .NET 定时任务:从选型到 Docker 部署全记录
后端·c#·asp.net
林川~0117 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
高升说20 小时前
机器人上岗之后:视觉系统从 demo 到产线的四道坎
机器人·机器视觉·工业自动化
He BianGu21 小时前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
tang_042721 小时前
【Hi.Ltd 专题】第9期:Interop 配置互操作(JSON/INI/XML/YAML/注册表/扫码)
经验分享·c#·hi.ltd系列
朗锐智科_机器视觉1 天前
光电传感器:机器视觉的“触发与到位“
人工智能·机器视觉·传感器·工控机·图像采集卡
tang_04271 天前
【Hi.Ltd 专题】第7期:Threading 采集线程、锁与 LRU 缓存
经验分享·c#·hi.ltd系列