当前位置: 首页 > 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)

相关文章:

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

第十八篇 机器视觉案例 之 连接件测量 文章目录 第十八篇 机器视觉案例 之 连接件测量1.案例要求2.实现思路2.1 测量圆心到直线的距离2.2 测量圆心到直线起点的连线和直线的夹角 3.使用控件3.1 模板匹配工具 —— CogPMAlignTool3.2 定位工具 —— CogFixtureTool3.3 卡尺工具 …...

C++ 中面向对象编程中对象的状态存储与恢复的处理

1.对象存储 1)栈存储: 对于局部对象,它们存储在栈上。当进入包含对象定义的代码块时,对象被创建并压入栈中。 例如: class fun { public: int a; }; void func() { fun A; // 对象存储在栈上,随着函数结束自动销毁…...

ip_output函数

ip_output函数是Linux内核(特别是网络子系统)中用于发送IPv4数据包的核心函数。以下是一个示例实现,并附上详细的中文讲解: int ip_output(struct net *net, struct sock *sk, struct sk_buff *skb) {struct iphdr *iph; /* 构建IP头部 */iph = ip_hdr(skb);/* 设置服务…...

【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)

一、RAGFlow简介 RAGFlow是一个基于对文档深入理解的开源RAG(Retrieval-augmented Generation,检索增强生成)引擎。 主要作用: 让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大…...

现代风格VUE3易支付用户控制中心

适用系统 彩虹易支付 技术栈 vitevue3elementuiplusphp 亮点 独立前端代码,扩展开发,不改动系统文件,不影响原版升级 支持功能订制 界面预览...

CentOS 7 上自动安装 Python 3.9 脚本

安装 在 CentOS 7 上安装 Python 3.9 可以通过编写一个 Shell 脚本来自动化这一过程。以下是一个示例脚本,它将帮助你在 CentOS 7 上安装 Python 3.9: #!/bin/bash# 脚本设置失败终止 set -e# 更新系统 # sudo yum update -y# 安装依赖 sudo yum insta…...

Spring(二)---基于注解的方式实现Bean管理和注入属性

目录 引入 什么是注解 Spring针对Bean管理中创建对象提供的注解 用注解的方式创建对象 ①:编写接口和实现类 ②:在需要管理的类上添加Component注解(上边四个都可以) ③:编写配置文件,重点是开启注解…...

采购管理系统的设计与实现【文档+源码】

目录 摘 要 Abstract 第一章 引言 1.1研究现状 1.2主要研究的目的及内容 1.3研究方法及设计思路 1.3.1 研究方法 1.3.2 设计思路 1.4.相关技术简介 1.4.1 JSP技术简介 1.4.2 Struts 框架 1.4.3 Hibernate数据访问框架 1.4.4 B/S模式分析 1.5 系统开发步骤 第二…...

Overleaf编译运行时间太长,国内如何支付升级Overleaf高级账户?

大家好,我是『扑扑特桔』 最近为了赶论文,我一直在 Overleaf 上忙活。 但是因为论文里面图片比较多,因此在某一次编译的时候,突然就提示编译超时。 主要是因为用的是免费版本的Overleaf,对编译时长有限制&#xff0c…...

UE5喷涂功能

许多FPS/TPS 游戏都有喷涂、涂鸦功能 其实原理很简单,就是利用了延迟贴花实现的 我们从网上随便找一张图 创建一个材质,材质域选择延迟贴花 混合模式选择半透明,自发光强度可以看感觉调整 材质做好之后编译保存,新建一个Actor…...

Unity局部和世界坐标系相互转换的实现原理

注:本篇是基于唐老师的学习视频做的一些理论实践,需要提前知道一些线性代数的基础知识,原视频链接: 8.数学基础知识学习说明_哔哩哔哩_bilibili 前期准备: 知识点①: Unity中需要遵守的设定:…...

MySQL通用语法 -DDL、DML、DQL、DCL

SQL 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准 。 SQL通用语法 MySQL语言的通用语法。 SQL语句可以单行或多行书写,以分号结尾。SQL语句可以使用空格/缩进来增强…...

C# 6.0 连接elasticsearch数据库

在 C# 6.0 中连接 Elasticsearch 数据库,您可以使用官方的 Elasticsearch 客户端库 NEST。NEST 是一个高性能的 .NET 客户端,用于与 Elasticsearch 进行交互。以下是一个详细的步骤指南,帮助您在 C# 6.0 项目中连接和操作 Elasticsearch。 1. 安装 NEST 包 首先,您需要在您…...

占个坑:利用工作以外的时间,用numpy实现MLP-手写识别

背景 随着近半年的正式工作,一直在做的都是模型后处理相关的,逐渐意识到技术的自我迭代陷入了瓶颈。组里都是搞模型的,对于缺少模型背景的我,很难深刻理解同事将模型和业务结合时好的idear,这使得我难以掌握组里最核心…...

抽象之诗:C++模板的灵魂与边界

引言 在计算机科学的浩瀚长河中,C模板如同一颗璀璨的星辰,以其独特的泛型编程方式为程序设计注入了灵魂。它是抽象的艺术,是类型的舞蹈,是效率与灵活性的交响乐。模板不仅是一种技术工具,更是一种哲学思考&#xff0c…...

后端统一接口返回状态【初步模板】

后端统一接口返回状态【模板】 文章目录 后端统一接口返回状态【模板】1 .Result类编写2 .Constants类编写3 .更改Controller层下的类return格式 开发过程中,每个接口的返回格式设计都是一样的,这样可以大大提高开发效率。 项目结构如下图:分…...

呼入机器人:24小时客户服务的未来趋势

呼入机器人:24小时客户服务的未来趋势 作者:开源大模型智能呼叫中心系统FreeAICC,Github:https://github.com/FreeIPCC/FreeAICC 在当今快节奏的商业环境中,客户服务已成为企业竞争的核心要素之一。随着人工智能技术…...

whisper.cpp: PC端测试 -- 电脑端部署音频大模型

whisper.cpp: PC端测试 1.环境需要2.构建项目3.PC测试 1.环境需要 以下是经实验验证可行的环境参考,也可尝试其他版本。 (1)PC:Ubuntu 22.04.4 (2)软件环境:如下表所示 工具版本安装Anacond…...

WPF ControlTemplate 控件模板

区别于 DataTemplate 数据模板,ControlTemplate 是控件模板,是为自定义控件的 Template 属性服务的,Template 属性类型就是 ControlTemplate。 演示, 自定义一个控件 MyControl,包含一个字符串类型的依赖属性。 pub…...

序列化和反序列化(一)

因为通过这段时间的学习,发现,序列化和反序列化的考点和漏洞在平时遇到的还是比较多的,而且自己也没有特别去学习过这个知识点,所以在这里写一篇关于这里序列化和反序列话的博客,废话就停止在这里了。 在介绍具体的序列…...

QOwnNotes版本控制完全指南:掌握Git集成的笔记历史管理

QOwnNotes版本控制完全指南:掌握Git集成的笔记历史管理 【免费下载链接】QOwnNotes QOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration. 项目地址: https://gitcode.com/gh_mirrors/qo/…...

终极指南:使用wger打造完全自托管的健身与营养追踪系统

终极指南:使用wger打造完全自托管的健身与营养追踪系统 【免费下载链接】wger Self hosted FLOSS fitness/workout, nutrition and weight tracker 项目地址: https://gitcode.com/GitHub_Trending/wg/wger wger是一个开源的、功能全面的健身与营养管理平台&…...

Ostrakon-VL-8B多模态能力解析:图文联合理解在零售场景的体现

Ostrakon-VL-8B多模态能力解析:图文联合理解在零售场景的体现 1. 零售场景中的多模态挑战 现代零售行业面临着复杂的视觉理解需求。传统计算机视觉系统通常只能完成单一任务,比如商品识别或文字提取,而无法同时理解图像中的多种元素及其相互…...

从新手小白到资深开发者:GISBox与QGIS如何适配你的成长路径?

随着地理信息技术的加速演进,工具选型已成为提升空间数据处理效率的关键环节。本文立足于产品定位、功能体系与目标用户三大核心维度,系统梳理GISBox与QGIS的差异化特征,旨在为教育、科研、企业及个人开发者提供清晰、务实的工具决策依据。 …...

OpenClaw日志分析实战:Phi-3-vision-128k-instruct多维度错误模式识别

OpenClaw日志分析实战:Phi-3-vision-128k-instruct多维度错误模式识别 1. 为什么需要智能日志分析 凌晨三点,我被手机警报惊醒——服务器又崩了。揉着惺忪睡眼打开终端,面对满屏的日志文件,那种熟悉的无力感再次袭来。这已经是本…...

AI辅助开发新体验:描述你的健康应用构想,快马一键生成Compose项目代码

最近在尝试开发一个Android端的个人健康数据追踪应用,发现用传统方式从零开始写代码特别耗时。正好体验了InsCode(快马)平台的AI辅助开发功能,整个过程变得轻松多了。下面分享下这个健康应用的实现思路和关键模块设计。 整体架构设计 采用Clean Architec…...

基于深度学习的文本情感分析改进模型实验方案

基于深度学习的文本情感分析改进模型实验方案 一、实验背景与目的 1.1 背景 情感分析是自然语言处理的核心任务之一,旨在自动识别文本所表达的情感倾向(如正面、负面)。传统机器学习方法依赖人工特征工程,而深度学习方法能够自动学习文本的层次化特征表示。然而,现有模…...

基于 PLC 的自动门控制系统设计与仿真程序探索

基于plc的自动门控制系统设计 仿真程序资料在自动化控制领域,基于 PLC(可编程逻辑控制器)的自动门控制系统应用广泛。今天咱就唠唠这基于 PLC 的自动门控制系统设计以及相关的仿真程序资料。 自动门控制系统设计需求 自动门要实现多种功能&a…...

基于Matlab的多自由度轴承静刚度计算之旅

基于Matlab的多自由度轴承静刚度计算 因分析静态下刚度结果,仅考虑重力作用,未考虑离心力的作用 深沟球轴承和圆锥轴承基本参数包括滚珠数量、滚珠直径、中称直径、曲率和材料参数 程序已调通,可直接运行在机械工程领域,深入了解轴…...

C语言转译LDPC码:试用比特翻转算法逼近香农极限

作者:绳匠_ZZ0为什么我要学LDPC?前几篇文章中,我已经实现了卷积码(Viterbi译码)和RS卷积级联码,它们在低信噪比下表现不错。但学长和我提到:Turbo码和LDPC码能够逼近香农极限,在相同…...