C#联合halcon实现直线查找

打印 上一主题 下一主题

主题 782|帖子 782|积分 2346

一、前言

C#之Winform + Halcon实现图像直线查找功能
1、创建计量模型 HMetrologyModel
2、添加计量对象到线测量
3、设置计量对象参数
4、设置查找参数:边缘阈值、边缘选择、太过方式
5、显示测量点
二、运行效果


三、代码
  1.         double r1 = 50.00, c1 = 300.0;
  2.         double r2 = 150.0, c2 = 300.0;
  3.         double measureLength1 = 10, measureLength2 = 10;
  4.         double measureSigma   = 1,  measureThreshold = 10;
  5.         HTuple genParamName = new HTuple();
  6.         HTuple genParamValue = new HTuple();
  7.         //*创建计量模型
  8.         HMetrologyModel metrologyHandle =new HMetrologyModel();
  9.         //*添加计量对象到线测量()
  10.         metrologyHandle.AddMetrologyObjectLineMeasure(r1,c1,r2,c2,
  11.         measureLength1, measureLength2, measureSigma, measureThreshold,
  12.         genParamName, genParamValue);
  13.         //*设置计量对象参数
  14.         metrologyHandle.SetMetrologyObjectParam( 0, "measure_length1",100);
  15.         metrologyHandle.SetMetrologyObjectParam(0, "measure_length2",20);
  16.         metrologyHandle.SetMetrologyObjectParam(0, "measure_distance",10);
  17.         //*边缘阈值
  18.         metrologyHandle.SetMetrologyObjectParam(0, "measure_threshold",10);
  19.         //*边缘选择
  20.         metrologyHandle.SetMetrologyObjectParam(0, "measure_select","first");
  21.         //*过度方式
  22.         metrologyHandle.SetMetrologyObjectParam(0, "measure_transition","positive");
  23.         //ho_image为自己创建的HImage对象实例 HImage ho_image = new HImage()
  24.         //
  25.         metrologyHandle.ApplyMetrologyModel(ho_image);
  26.         //*显示测量点
  27.         HXLDCont contours = new HXLDCont();
  28.         contours = metrologyHandle.GetMetrologyObjectMeasures(0, "all", out HTuple row, out HTuple column);
  29.         HXLDCont xldCont = new HXLDCont();
  30.         xldCont.GenCrossContourXld(row, column, 10, 0.785398);
  31.         HTuple result = metrologyHandle.GetMetrologyObjectResult(0, "all", "result_type",
  32.                 new HTuple(new string[] { "row_begin", "column_begin", "row_end", "column_end" }));
  33.         //*获得测量直线
  34.         double row_begin = result[0];
  35.         double column_begin = result[1];
  36.         double row_end = result[2];
  37.         double column_end = result[3];
  38.         HXLDCont xldLine = new HXLDCont();
  39.         xldLine.GenContourPolygonXld(
  40.         new HTuple(new double[] { row_begin, row_end }),
  41.         new HTuple(new double[] { column_begin, column_end })
  42.          );
  43.         //设置颜色并显示
  44.         //自己封装的方法
  45.         hWTool.DispObj(contours,"blue");//测量的直线范围
  46.         hWTool.DispObj(xldLine, "blue");//测量出来的直线
  47.         hWTool.DispObj(xldCont, "green");//测量出来的点
  48.         //hWindowControl1为HWindowControl对象实例
  49.         //hWindowControl1.HalconWindow.SetColor("blue");
  50.         //hWindowControl1.HalconWindow.DispObj(xldLine);//测量出来的直线
  51.         //hWindowControl1.HalconWindow.SetColor("red");
  52.         //hWindowControl1.HalconWindow.DispObj(contours);//测量的直线范围
  53.         // hWindowControl1.HalconWindow.SetColor("green");
  54.         //hWindowControl1.HalconWindow.DispObj(xldCont);//测量出来的点
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表