基于Halcon仿VM流程列表的执行效果
Halcon本身应用需要一定的门槛,但是也可以封装成类似VM简单易操作的样子
上期文章分享的是连线功能,本期分享数据传参
1,定义通用属性和方法
public class BaseModel
{
public HObject HInput { get; set; }//图像输入
public HObject HOutput { get; set; }//图像输出
public HTuple TInput { get; set; }//数据输入
public HTuple TOutput { get; set; }//数据输出
public HObject RawImage { get; set; }//原始图像
}
2,定义灰度化工具的图像
public class GrayModel : BaseModel
{
public HObject GrayImage { get; set; }
}
3,定义所有来自模型的数据
public GrayModel Model { get; set; } = new GrayModel();
4,指定Halcon方法
HOperatorSet.Rgb1ToGray(Model.HInput, out var grayImage);
5,保存独有数据
Model.HOutput = grayImage;//输出图像
6,保存通用数据
NodeTool.SetNodeDate(NodeName, Model);
//
public void SetNodeDate(string nodeName, BaseModel model)
{
//获取当前节点
var currentNode = GetNodeForNodeName(nodeName);
//获取下一个节点
var nextNode = GetNextNode(currentNode);
//如果不为空则绑定数据
if (nextNode != null)
{
//获取下一个节点执行工具对象中对应的数据模型
var nextModel = ToolDict[nextNode.NodeName].GetModel();
//设置下一个节点的输入
nextModel.TInput=model.TOutput;
nextModel.HInput=model.HOutput;
}
}