夸克网盘可自取。链接:https://pan.quark.cn/s/ac192950e051
//在此之前可以先浏览2篇博客,分别是序列化与反序列化和ROI绘制获取
https://blog.csdn.net/m0_51559565/article/details/134422834 //序列化与反序列化
https://blog.csdn.net/m0_51559565/article/details/134422052 //绘制与获取ROI
在编写通用上位机或普通上位机时,我们经常会遇到对多个产品或者有新增产品的情况,但是直接修改代码又会非常麻烦,所以直接使用通用的上位机模块与序列化可以快速解决不同产品的问题。
halcon文档解析。
在halcon的算子中针对常见的几何图像进行测量。其中add_metrology_object_generic可以对圆,椭圆,矩形,直线进行测量。主要内容可以直接查看文档
难点代码解析
//在初始化窗体时,会先添加一部分常用的功能模块
//其中通用参数与匹配位置是最常使用的
private void HalconCircle_Load(object sender, EventArgs e)
{
Measure_Set.Items.Add("uniform");//所有的,会获取所有可以匹配的点集
Measure_Set.Items.Add("positive");//白到黑点集
Measure_Set.Items.Add("negative");//黑到白点集
Measure_Set.SelectedIndex= 0;
Measure_Place.Items.Add("first");//所有点集的第一条轮廓,从中心出发
Measure_Place.Items.Add("last");//所有点集的最后一条轮廓,从结尾出发
Measure_Place.Items.Add("all");//所有点集,从预先指定的圆半径出发,上下查找
Measure_Place.SelectedIndex= 0;
Measure_Height.Text = "100";
Measure_wide.Text = "10";
Measure_Guass.Text = "1.2";
Measure_Threshold.Text = "30";
}
HOperatorSet.AddMetrologyObjectCircleMeasure(measurehandel, result[0], result[1], result[2],
Height, wide, Guass, Threshold, (new HTuple("measure_transition")
).TupleConcat("measure_select"), (new HTuple(Measure_Set.Text)
).TupleConcat(Measure_Place.Text),out HTuple index);
//模块中直接使用AddMetrologyObjectCircleMeasure算子,圆形测量算子来实现对圆的查找,与几何测量的算子基本一致
在halcon的文档中,对通用参数与位置的描述比较的模糊。通用参数与位置并不是一一对应的情况,而是相对的,在程序和上文列举了部分最常用到的参数
最终效果图: