前言
因为Vpp文件类型包含了以下三种
- QuickBuid
- Job
- ToolBlock
不同类型的打开方式不同,需要提前知道vpp是什么类型
例如
这个TB.vpp文件是TOOLBLOCK,就不能直接在visionpro中打开(直接打开需要QuickBuid文件),
可以先新建一个QuickBuid文件,引入ToolBlock工具,在ToolBlock工具打开
类型查找方式
需要用到此工具,但不能直接打开,需要用命令行
C:\Users\red>cd D:\Visionpro\VisionPro\bin\ //转到此目录
C:\Users\red>vppversion --help //查看帮助文件
//查看对应vpp文件类型及其他内容
C:\Users\red>vppversion -v D:\Visionpro\VisionPro\samples\Programming\ToolBlock\ToolBlockLoad\TB.vpp
其他
用VS加载TOOLBLOCK
准备工作
可以提前复制vpp和图像文件加入项目中,方便添加相对路径
代码
需要提前添加引用,添加程序集
编写代码时要参考vpp中的命名规则
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Cognex.VisionPro;
using Cognex.VisionPro.Blob;
using Cognex.VisionPro.ToolBlock;
using Cognex.VisionPro.ImageFile;
namespace mytbload
{
public partial class Form1 : Form
{
CogImageFileTool mIFTool;
CogToolBlock tb;
public Form1()
{
InitializeComponent();
mIFTool = new CogImageFileTool();
mIFTool.Operator.Open("coins.idb", CogImageFileModeConstants.Read);//设置图像来源
tb = CogSerializer.LoadObjectFromFile("TB.vpp") as CogToolBlock;//设置vpp文件
tb.Inputs["FilterLowValue"].Value = 5050;//设置输入参数最小最大面积
tb.Inputs["FilterHighValue"].Value = 8050;
tb.Ran += Tb_Ran;//获取结果
}
private void Tb_Ran(object sender, EventArgs e)
{
//数据更改部分
//显示是否合格
lbResult.Text = tb.Outputs["InspectionPassed"].Value.ToString();
//显示斑点个数
CogBlobTool mBlobTool = tb.Tools["CogBlobTool1"] as CogBlobTool;
lbCount.Text = mBlobTool.Results.GetBlobs().Count.ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
mIFTool.Run();//运行图像输入工具
tb.Inputs["Image"].Value = mIFTool.OutputImage as CogImage8Grey;//设置,传入一张灰度图
tb.Run();
}
}
}
结果图
visionpro中toolblock图