当前位置: 首页 > news >正文

VisionPro 机器视觉案例 之 连接件测量

第十八篇 机器视觉案例 之 连接件测量

文章目录

  • 第十八篇 机器视觉案例 之 连接件测量
    • 1.案例要求
    • 2.实现思路
      • 2.1 测量圆心到直线的距离
      • 2.2 测量圆心到直线起点的连线和直线的夹角
    • 3.使用控件
      • 3.1 模板匹配工具 —— CogPMAlignTool
      • 3.2 定位工具 —— CogFixtureTool
      • 3.3 卡尺工具 —— CogCaliperTool
      • 3.4 画线工具 —— CogCreateLineTool
      • 3.5 找圆工具 —— CogFindCircleTool
      • 3.6 画线工具 —— CogCreateSegmentTool
      • 3.7 点到线距离工具 —— CogDistancePointLineTool
      • 3.8 线线夹角工具 —— CogAngleLineLineTool
    • 4.代码逻辑
    • 5.实现效果
    • 6.知识点总结
      • 6.1 弧度角度之间的转换

1.案例要求

在这里插入图片描述
在这里插入图片描述

1.测量圆心到直线距离

2.测量圆心到直线起点的连线和直线的夹角

  • 本案例还可以通过Halcon实现,参考文章:Halcon 机器视觉案例 之 连接件测量

2.实现思路

2.1 测量圆心到直线的距离

  • 即点到线距离,使用点线距离工具 CogDistancePointLineTool
    在这里插入图片描述

    • 需要获得一点坐标→圆心坐标→使用找圆工具CogFindCircleTool
      在这里插入图片描述

      • 找圆工具需要圆的大致位置→对连接件圆的部分进行模板匹配
        在这里插入图片描述
    • 需要获得一条直线→使用画线工具CogCreateLineTool
      在这里插入图片描述

      • 画线工具需要一个点(连接件边上的点)→使用卡尺工具CogCaliperTool
        在这里插入图片描述

      • 卡尺工具需要连接件边的位置→对连接件上侧边进行模板匹配CogPMAlignTool在这里插入图片描述

      • 每一张图片的连接件位置不固定→需要使用标定工具CogFixtureTool为图像设置坐标系
        在这里插入图片描述

      • 标定工具需要图像变化的角度→对整个连接件进行模板匹配在这里插入图片描述

2.2 测量圆心到直线起点的连线和直线的夹角

  • 线线夹角使用线线夹角测量工具CogAngleLineLineTool
    在这里插入图片描述
    • 需要两条线,一条连接件上的线1,一条圆心到线1起点的直线2,线1在2.1已经画出,只需找到线2,使用创建线段工具CogCreateSegementTool在这里插入图片描述

3.使用控件

3.1 模板匹配工具 —— CogPMAlignTool

  • 1.对连接件整体进行模板匹配在这里插入图片描述

  • 2.对连接件圆形部分进行模板匹配在这里插入图片描述

  • 3.对连接件上边缘进行模板匹配
    在这里插入图片描述

注:对于CogPMAlignTool模板匹配工具的使用详解,可以参考文章:VisionPro 机器视觉控件篇 之 模板匹配工具 CogPMAlignTool

3.2 定位工具 —— CogFixtureTool

  • 获得对整个模板匹配工具结果中的参数
    在这里插入图片描述

3.3 卡尺工具 —— CogCaliperTool

  • 使用标定后的图像和模板匹配的坐标点
    在这里插入图片描述

3.4 画线工具 —— CogCreateLineTool

在这里插入图片描述

3.5 找圆工具 —— CogFindCircleTool

  • 在添加终端中添加找圆工具的坐标输入在这里插入图片描述

  • 输入坐标,修改调整参数
    在这里插入图片描述

3.6 画线工具 —— CogCreateSegmentTool

  • 输入圆心坐标和直线1起点坐标
    在这里插入图片描述

3.7 点到线距离工具 —— CogDistancePointLineTool

在这里插入图片描述

3.8 线线夹角工具 —— CogAngleLineLineTool

在这里插入图片描述

4.代码逻辑

  • 声明全局集合
  private CogGraphicCollection gc = new CogGraphicCollection();
  • 核心代码
    CogDistancePointLineTool dpl = mToolBlock.Tools["CogDistancePointLineTool1"] as CogDistancePointLineTool;CogAngleLineLineTool agl = mToolBlock.Tools["CogAngleLineLineTool1"] as CogAngleLineLineTool;CogPMAlignTool pma = mToolBlock.Tools["CogPMAlignTool3"] as CogPMAlignTool;//声明控件double x_angle = pma.Results[0].GetPose().TranslationX + 200;double y_angle = pma.Results[0].GetPose().TranslationY + 50;double x_distance = dpl.X;double y_distance = dpl.Y-300;//获取坐标点并添加偏移量使得文本位置合适CogGraphicLabel label_angle = new CogGraphicLabel();CogGraphicLabel label_distance = new CogGraphicLabel();//创建labeldouble rad = agl.Angle;double ang =  rad * (180 / Math.PI);//弧度转角度double distance = dpl.Distance;//获得距离label_angle.SetXYText(x_angle,y_angle,"角度为:"+ang.ToString("F2"));label_angle.Font = new Font("楷体",20);label_angle.Color = CogColorConstants.Magenta;label_distance.SetXYText(x_distance,y_distance,"距离为:"+distance.ToString("F2"));label_distance.Font = new Font("楷体",20);label_distance.Color = CogColorConstants.Magenta;//为label赋值gc.Clear();gc.Add(label_angle);gc.Add(label_distance);
  • 输出到图像
foreach(ICogGraphic gc1 in gc){mToolBlock.AddGraphicToRunRecord(gc1,lastRecord,"CogFixtureTool1.OutputImage","");}

5.实现效果

在这里插入图片描述

6.知识点总结

6.1 弧度角度之间的转换

  • 1.使用公式计算
    • 角度 = 弧度 × (180/π)
    • π在C#中用 Math.PI 表示
    • double angle = rad * (180 / Math.PI)
  • 2.使用函数CogMisc.RadToDeg()
    • 角度转弧度就是CogMisc.DegToRad()
    • double angle = CogMisc.RadToDeg(rad)
http://www.lryc.cn/news/507432.html

相关文章:

  • C++ 中面向对象编程中对象的状态存储与恢复的处理
  • ip_output函数
  • 【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)
  • 现代风格VUE3易支付用户控制中心
  • CentOS 7 上自动安装 Python 3.9 脚本
  • Spring(二)---基于注解的方式实现Bean管理和注入属性
  • 采购管理系统的设计与实现【文档+源码】
  • Overleaf编译运行时间太长,国内如何支付升级Overleaf高级账户?
  • UE5喷涂功能
  • Unity局部和世界坐标系相互转换的实现原理
  • MySQL通用语法 -DDL、DML、DQL、DCL
  • C# 6.0 连接elasticsearch数据库
  • 占个坑:利用工作以外的时间,用numpy实现MLP-手写识别
  • 抽象之诗:C++模板的灵魂与边界
  • 后端统一接口返回状态【初步模板】
  • 呼入机器人:24小时客户服务的未来趋势
  • whisper.cpp: PC端测试 -- 电脑端部署音频大模型
  • WPF ControlTemplate 控件模板
  • 序列化和反序列化(一)
  • Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
  • 取子串(指针)
  • Linux系列之如何更换Centos yum源?
  • 过滤器和拦截器的区别详解
  • centos使用mkisofs构建无人值守镜像(附官方学习文档)
  • Pyside6+qml+Qtcreator项目实战
  • 秒鲨后端之MyBatis【1】环境的搭建和核心配置文件详解
  • 编译原理复习---目标代码生成
  • Winnows基础(2)
  • 酒蒙子骰子小程序系统
  • 网络安全防范