halcon联合C#测量十字Mark中心

函数说明

public void FitRectangleMeasure(HWindow 窗口句柄, HImage 图像, out double 中心Y坐标, out double 中心X坐标)

操作步骤,首先绘制两个矩形测量框;之后就可进行自动计算。

public void FitRectangleMeasure(HWindow hWindow, HImage hImage, out double Row, out double Col){try{int rtCount = 2;double[] rtRows = new double[rtCount];double[] rtCols = new double[rtCount];double[] rtAngles = new double[rtCount];double[] rtLen1s = new double[rtCount];double[] rtLen2s = new double[rtCount];hWindow.SetColor("red");hWindow.SetDraw("margin");HTuple hv_Row1, hv_Column1, hv_Row2, hv_Column2, hv_RectangleParameter;//绘制测量矩形for (int rtIndex = 0; rtIndex < rtCount; rtIndex++){HOperatorSet.DrawRectangle1Mod(hWindow, 1000, 1000, 1200, 1200, out hv_Row1, out hv_Column1, out hv_Row2, out hv_Column2);double dRowCenter = (hv_Row1.D + hv_Row2.D) / 2;double dColCenter = (hv_Column1.D + hv_Column2.D) / 2;double dL1 = (hv_Column2.D - hv_Column1.D) / 2;double dL2 = (hv_Row2.D - hv_Row1.D) / 4;rtRows[rtIndex] = dRowCenter;rtCols[rtIndex] = dColCenter;rtAngles[rtIndex] = 0;rtLen1s[rtIndex] = dL1;rtLen2s[rtIndex] = dL2;}//测量宽度int nHalfBorder = (int)(Math.Min(rtLen1s[0], rtLen2s[0]) + Math.Min(rtLen1s[1], rtLen2s[1])) / 2;//矩形测量句柄的创建HTuple hv_MetrologyHandle = null, hv_MetrologyRectangleIndices = null;HOperatorSet.CreateMetrologyModel(out hv_MetrologyHandle);HOperatorSet.AddMetrologyObjectRectangle2Measure(hv_MetrologyHandle, new HTuple(rtRows),new HTuple(rtCols), new HTuple(rtAngles), new HTuple(rtLen1s), new HTuple(rtLen2s), nHalfBorder, nHalfBorder / 4,1, 10, new HTuple(), new HTuple(), out hv_MetrologyRectangleIndices);HOperatorSet.SetMetrologyObjectParam(hv_MetrologyHandle, hv_MetrologyRectangleIndices, "num_instances", 1);HOperatorSet.SetMetrologyObjectParam(hv_MetrologyHandle, hv_MetrologyRectangleIndices, "min_score", 0.1);HOperatorSet.SetMetrologyObjectParam(hv_MetrologyHandle, hv_MetrologyRectangleIndices, "measure_transition", "uniform");HOperatorSet.ApplyMetrologyModel(hImage, hv_MetrologyHandle);//测量出的信息HObject ho_MeasureContours;//测量框 HObject ho_Cross;   //测量出来的交界点HOperatorSet.GenEmptyObj(out ho_MeasureContours);HOperatorSet.GenEmptyObj(out ho_Cross);ho_MeasureContours.Dispose();ho_Cross.Dispose();HOperatorSet.GetMetrologyObjectMeasures(out ho_MeasureContours, hv_MetrologyHandle, "all", "all", out hv_Row1, out hv_Column1);HOperatorSet.GenCrossContourXld(out ho_Cross, hv_Row1, hv_Column1, 20, 0.785398);hWindow.DispObj(ho_MeasureContours);//hWindow.DispObj(ho_Cross);HOperatorSet.GetMetrologyObjectResult(hv_MetrologyHandle, "all", "all", "result_type","all_param", out hv_RectangleParameter);//测量出来的矩形框HObject ho_ResultContour;HOperatorSet.GenEmptyObj(out ho_ResultContour);ho_ResultContour.Dispose();HOperatorSet.GetMetrologyObjectResultContour(out ho_ResultContour, hv_MetrologyHandle, "all", "all", 1.5);hWindow.DispObj(ho_ResultContour);//测量出矩形的数据HTuple hv_Sequence, hv_RectangleRow, hv_RectangleColumn, hv_RectanglePhi, hv_RectangleLength1, hv_RectangleLength2;hv_Sequence = HTuple.TupleGenSequence(0, (new HTuple(hv_RectangleParameter.TupleLength())) - 1, 5);hv_RectangleRow = hv_RectangleParameter.TupleSelect(hv_Sequence);hv_RectangleColumn = hv_RectangleParameter.TupleSelect(hv_Sequence + 1);hv_RectanglePhi = hv_RectangleParameter.TupleSelect(hv_Sequence + 2);hv_RectangleLength1 = hv_RectangleParameter.TupleSelect(hv_Sequence + 3);hv_RectangleLength2 = hv_RectangleParameter.TupleSelect(hv_Sequence + 4);if (hv_RectangleRow.TupleLength() == rtCount){Row = (hv_RectangleRow[0].D + hv_RectangleRow[1].D) / 2;Col = (hv_RectangleColumn[0].D + hv_RectangleColumn[1].D) / 2;}else{Row = 0;Col = 0;}HOperatorSet.ClearMetrologyModel(hv_MetrologyHandle);//释放HObjectho_MeasureContours.Dispose();ho_Cross.Dispose();ho_ResultContour.Dispose();}catch{Row = 0;Col = 0;}}

不懂的话可以问我哦,下边评论看到了第一时间回复。如果觉得有用点赞哦。

PS

我的博客不定时分享日常工作中觉得有价值的内容,包括C#、C++、halcon、运动控制等等内容,喜欢的点赞,关注我。

halcon联合C#测量十字Mark中心相关推荐

  1. Halcon之一维测量

    Halcon之一维测量 一维测量 1.基本概念 1.1 获取图像 1.2 创建测量对象 1.3 测量 1.4 销毁测量对象 2 扩展概念 2.1 辐射校准图像 2.2 对齐 ROI 或图像 2.3 校 ...

  2. Halcon学习笔记(一):Qt+Halcon联合开发配置

    Halcon学习笔记(1):Qt+Halcon联合开发配置 首先是新建一个QT项目qtest_hc 方法一: 1)QT项目文件 qtest_hc 添加库: #1.包含目录添加 INCLUDEPATH ...

  3. C#与Halcon联合编程 1

    C#与Halcon联合编程 1 本人所使用的软件版本为:Windows10 + VS2013 + Halcon 17.12: 参考网址: https://zhidao.baidu.com/questi ...

  4. halcon第二十讲:halcon联合c#配置及例程

    一.halcon联合c#配置比联合vc配置简单多了: 1.项目->属性->生成->目标平台改成自己电脑对应的平台,我的电脑是64位的,所以选择x64: 2.右键你的项目->添加 ...

  5. C#与 Halcon 联合编程

    显示图像C#与 Halcon 联合编程: 1.调用 Halcon 图像处理数据库,是否调用成功,是利用 Halcon图像显示控件-能否正确显示图像进行判断. 如何利用 C#与 Halcon 联合编程 ...

  6. Halcon联合C#编程

    Halcon联合C#编程 Halcon联合C#编程目前我知晓的有三种方式:1.将Halcon代码导成C#代码然后复制到C#程序中:2.直接采用C#中的Halcon库语句进行程序编写(难度有点大,其实就 ...

  7. C#和Halcon联合编程完成海康工业相机数据转化

    C#调用海康工业相机数据转Halcon格式 C#.工业相机和Halcon的混合编程 文章目录 C#调用海康工业相机数据转Halcon格式 前言 一.命名空间的引用 二.海康相机采集图像 1.查找设备 ...

  8. uvw对位平台,halcon联合c#编程

    uvw对位平台,halcon联合c#编程,供学习的朋友参考 YID:335669307647841t***0

  9. (转)Qt+Halcon联合开发配置

    转自:Y忍冬草        Y忍冬草_ http://blog.csdn.net/y363703390    https://blog.csdn.net/y363703390/article/det ...

最新文章

  1. mysql查询条件_mysql条件查询,最简单的一种,你知道吗?
  2. python day08
  3. idea启动tomcat没有加载项目_震惊!我三步就搞定了 Tomcat 源码环境搭建!
  4. python库_python使用ctypes库调用DLL动态链接库_python
  5. 如何计算环形复杂度_数据结构与算法复杂度
  6. StringUtils 的常用方法
  7. Asp.Net中OnClientClick与OnClick之我见
  8. 比较各种SpA分类标准
  9. 山东理工——1019
  10. 最好的Linux文件管理器,适用于 Linux 用户的 10 款优秀且免费的文件管理器
  11. delphi 10.3 (一) 控件安装和使用
  12. linux公社_又一个Linux发行版宣告死亡!曾经是最好的桌面版BSD操作系统
  13. PTB IP——支持电信配置文件的精确同步:5G
  14. 【数据结构】栈的简单理解以及对栈的基本操作
  15. 加载.npz文件时,出现错误:OSError: Failed to interpret file ‘xxx.npz‘ as a pickle
  16. Intellij IDEA Spring Configuration check
  17. 哪些职业适合转行产品经理?
  18. 树形结构数据封装(及拉平)的几种方法
  19. Linux桌面录屏分享
  20. 手机网站常用的推广方式有哪些

热门文章

  1. 概率论与数理统计-ch8-假设检验
  2. 【起航计划 011】2015 起航计划 Android APIDemo的魔鬼步伐 10 App-Activity-Reorder Activities 后退栈 Intent FLAG...
  3. 【转】DB2 常用命令
  4. 九度 1470 调整方阵
  5. iOS10 权限访问崩溃
  6. Oracle数据库 查看表是否是 索引组织表的方法
  7. linux环境部署常用命令
  8. .NET Forms身份验证
  9. 关于VerifyError
  10. eclipse下使用git插件上传代码至github