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

VisionPro 机器视觉案例 之 黑色齿轮

第十五篇 机器视觉案例 之 齿轮齿数检测

文章目录

  • 第十五篇 机器视觉案例 之 齿轮齿数检测
    • 1.案例要求
    • 2.实现思路
      • 2.1 统计齿轮齿数使用模板匹配工具CogPMAlignTool,并从模板匹配工具的结果集中得到每一个齿的中心点。
      • 2.2 测量距离需要知道两个坐标点,一个是每一个齿的坐标,一个是齿轮中心坐标:齿的坐标已经获得,中心坐标需要一个找圆工具CogFindCircleTool通过找拟合圆得到圆心,找圆工具需要一个圆心的大致坐标位置,因此再使用一个模板匹配工具,最后使用点点距离测量工具测得距离
      • 2.3 距离的输出要求按照每行五个输出,需要对输出的坐标进行处理,代码如下
    • 3.使用控件
      • 3.1 模板匹配工具 —— CogPMAlignTool
      • 3.2 找圆工具 —— CogFindCircleTool
      • 3.3 点点距离工具 —— CogDistancePointPointTool
    • 4.代码逻辑
    • 5.实现效果
    • 6.知识点总结
      • 6.1 找圆工具的参数

1.案例要求

  • 检测齿轮齿数
  • 测量每一个齿中心到齿轮中心的距离,并将结果按照每行五个的格式输出
    在这里插入图片描述

2.实现思路

2.1 统计齿轮齿数使用模板匹配工具CogPMAlignTool,并从模板匹配工具的结果集中得到每一个齿的中心点。

2.2 测量距离需要知道两个坐标点,一个是每一个齿的坐标,一个是齿轮中心坐标:齿的坐标已经获得,中心坐标需要一个找圆工具CogFindCircleTool通过找拟合圆得到圆心,找圆工具需要一个圆心的大致坐标位置,因此再使用一个模板匹配工具,最后使用点点距离测量工具测得距离

2.3 距离的输出要求按照每行五个输出,需要对输出的坐标进行处理,代码如下

  • double x=i%5*100+100; double y=i/5*50+100;

3.使用控件

3.1 模板匹配工具 —— CogPMAlignTool

模板匹配工具一用来获得圆心大致位置,给找圆工具
在这里插入图片描述
模板匹配工具二用来找到每一个齿,需要调整旋转角度与查找概数在这里插入图片描述

3.2 找圆工具 —— CogFindCircleTool

  • 添加终端给坐标
  • 调整参数
    • 旋转角度为360°
    • 卡尺数量:数量越多找的圆越精确(合适的数量即可,过大的数量会导致工具卡顿)
    • 搜索方向:向内或向外,这里是向外

在这里插入图片描述

3.3 点点距离工具 —— CogDistancePointPointTool

在这里插入图片描述在代码中循环给工具赋值
在这里插入图片描述

4.代码逻辑

    CogPMAlignTool pma = mToolBlock.Tools["CogPMAlignTool2"]as CogPMAlignTool;CogDistancePointPointTool dis = mToolBlock.Tools["CogDistancePointPointTool1"]as CogDistancePointPointTool;CogFindCircleTool fct = mToolBlock.Tools["CogFindCircleTool1"]as CogFindCircleTool;int count = pma.Results.Count;labels = new CogGraphicLabel[count];Label.SetXYText(200,50,"一共有"+count.ToString()+"个");Label.Color = CogColorConstants.Magenta;Label.Font = new Font("楷体",20);for(int i = 0;i < count;i++){CogGraphicLabel label=new CogGraphicLabel();double x1 = pma.Results[i].GetPose().TranslationX;double y1 = pma.Results[i].GetPose().TranslationY;double X = fct.Results.GetCircle().CenterX;double Y = fct.Results.GetCircle().CenterY;dis.StartX = x1;dis.StartY = y1;dis.EndX = X;dis.EndY = Y;dis.Run();double distance = dis.Distance;double x=i%5*100+100;double y=i/5*50+100;label.SetXYText(x, y, "距离:"+distance.ToString("F0"));label.Color = CogColorConstants.Orange;labels[i] = label;}

5.实现效果

在这里插入图片描述

6.知识点总结

6.1 找圆工具的参数

  • 卡尺数量:指参与找圆的圆周上半径方向的找区分点的数量。这些点用于拟合圆,数量越多,拟合的圆可能越准确,但计算量也会相应增加。
  • 搜索长度:卡尺搜索区域的长度,即沿圆周方向搜索的范围。这个参数决定了搜索的精细程度。
  • 投影长度:卡尺搜索区域的宽度,即径向搜索的范围。它影响搜索的敏感度和准确性。
  • 搜索方向:搜索可以从内向外或由外向内进行,哪个方向区分度明显就选哪个方向。
  • 预期圆弧参数:用户可以根据需要设置预期圆弧的中心点、半径、起始角度及角度范围等,以帮助工具更准确地找到圆。
  • 忽略点数:在拟合过程中,可以忽略掉参与拟合点中误差过大的点。通常可以选取总点数的5%作为忽略点,以提高拟合的准确性。

相关文章:

VisionPro 机器视觉案例 之 黑色齿轮

第十五篇 机器视觉案例 之 齿轮齿数检测 文章目录 第十五篇 机器视觉案例 之 齿轮齿数检测1.案例要求2.实现思路2.1 统计齿轮齿数使用模板匹配工具CogPMAlignTool&#xff0c;并从模板匹配工具的结果集中得到每一个齿的中心点。2.2 测量距离需要知道两个坐标点&#xff0c;一个…...

学习python的第十三天之数据类型——函数传参中的传值和传址问题

学习python的第十三天之数据类型——函数传参中的传值和传址问题 函数传参中的传值和传址问题 函数传参的机制可以理解为传值&#xff08;pass-by-value&#xff09;和传址&#xff08;pass-by-reference&#xff09;的混合体&#xff0c;但实际上更接近于传对象引用&#xff…...

Windows11深度学习环境配置

CUDA、CUDNN 一、安装另一个版本的CUDA 下载.exe文件&#xff0c;网址打不开自己开热点就能解决&#xff1a;CUDA Toolkit 11.2 Downloads | NVIDIA Developer 若遇到“You already have a newer version of the NVIDIA Frameview SDK installed” 1.把电脑已经存在的FrameVi…...

电销老是被标记,该如何解决!!!

在当今的商业世界中&#xff0c;电话销售依然是许多企业拓展业务、接触客户的重要手段。然而&#xff0c;电销人员常常面临一个令人头疼的问题 —— 老是被标记。 一、电销被标记的困扰 当你的电话号码被频繁标记为 “骚扰电话”“推销电话” 等&#xff0c;会带来一系列不良…...

MyBatis入门——基本的增删改查

目录 一、MyBatis简介 二、搭建MyBatis (一)配置依赖 (二)log4j日志功能 (三)数据库配置文件——jdbc.properties (四)创建MyBatis的核心配置文件 (五)使用MyBatisX插件 三、项目其他配置搭建 (一)创建数据库连接工具类 (二)创建表 (三)创建数据库的实体类 (四)Use…...

学习Gentoo系统中二进制软件包和源代码包的概念

Gentoo Linux 是一个以源代码包管理和高度定制化特性著称的Linux发行版。以下是关于Gentoo系统中二进制软件包和源代码包的概念、发展历程以及它们各自的优势&#xff1a; 二进制软件包概念及发展历程&#xff1a; 概念&#xff1a;Gentoo的二进制软件包是指预先编译好的软件包…...

麦肯锡报告 | 未来的经济引擎:解读下一代竞争领域

随着科技和商业的快速发展&#xff0c;一些具有高增长性和高动态性的行业正在悄然崛起&#xff0c;成为推动全球经济发展的新引擎。这些行业被称为“竞争领域”&#xff08;Arenas&#xff09;。据麦肯锡全球研究院&#xff08;MGI&#xff09;的研究&#xff0c;这些领域有望在…...

连接mysql并读取指定表单数据到DataFrame

提问 python 如何连接mysql并读取指定表单数据到DataFrame 解答 要在Python中连接MySQL并读取指定表单数据到DataFrame&#xff0c;你可以使用pandas库结合sqlalchemy引擎或者mysql-connector-python。这里我将展示两种方法的示例代码。 使用pandas和sqlalchemy 确保安装了…...

从入门到精通数据结构----四大排序(上)

目录 首言&#xff1a; 1. 插入排序 1.1 直接插入排序 1.2 希尔排序 2. 选择排序 2.1 直接选择排序 2.2 堆排序 3. 交换排序 3.1 冒泡排序 3.2 快排 结尾&#xff1a; 首言&#xff1a; 本篇文章主要介绍常见的四大排序&#xff1a;交换排序、选择排序、插入排序、归并排…...

【bug】使用transformers训练二分类任务时,训练损失异常大

使用transformers训练二分类任务时&#xff0c;训练损失异常大 问题分析 问题 training_loss异常大&#xff0c;在二分类损失中&#xff0c;收敛在1~2附近&#xff0c;而eval_loss却正常&#xff08;小于0.5&#xff09; 分析 参考&#xff1a; Bug in gradient accumulation…...

文献阅读与笔记整理技巧

文献阅读 1.原因 &#xff08;1&#xff09;了解背景知识&#xff08;硕博学位论文&#xff0c;大牛文献综述&#xff09; &#xff08;2&#xff09;把握研究方向&#xff08;行业最新论文&#xff0c;大牛文献综述&#xff09; &#xff08;3&#xff09;学习设计思路&am…...

Python Flask中集成SQLAlchemy和Flask-Login

在现代Web应用开发中,数据库和用户认证是两个非常重要的功能。Flask作为一个轻量级的Python Web框架,本身只提供了最基本的Web功能。但是,它可以通过集成各种优秀的扩展库来增强功能。本文将介绍如何在Flask应用中集成SQLAlchemy(数据库)和Flask-Login(用户认证),并提供一个完整…...

esp32 JTAG 串口 bootload升级

文章目录 一、前言二、了解 JTAG 和 Ymodem 的工作原理2.1 环境准备2.2 Ymodem 协议工作原理2.3 固件分区准备 三、关键升级函数五、使用shell 测试 一、前言 如果使用 JTAG 串口 结合 Ymodem 协议 实现 ESP32 的固件升级&#xff0c;整体逻辑将围绕通过串口传输固件文件并将其…...

【linux】(17)压缩和解压

tar tar 是一个用于创建、维护、修改和解压缩存档文件的 Linux 命令。tar 常常用于备份文件或者将多个文件打包成一个文件以便于传输或存储。以下是 tar 命令的详细教程&#xff0c;包括常用选项和示例&#xff1a; 基本语法 tar [选项] [文件或目录]常用选项 -c&#xff1…...

摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现

随着科技的不断进步&#xff0c;摄像机视频分析软件的发展已经为我们的生活带来了许多便捷。其中&#xff0c;LiteAIServer视频智能分析平台的玩手机打电话检测算法技术尤为突出&#xff0c;它利用先进的图像处理和人工智能技术&#xff0c;能够自动识别并监控视频中的玩手机或…...

springboot购物推荐网站的设计与实现(代码+数据库+LW)

摘要 随着信息互联网购物的飞速发展&#xff0c;一般企业都去创建属于自己的电商平台以及购物管理系统。本文介绍了东大每日推购物推荐网站的开发全过程。通过分析企业对于东大每日推购物推荐网站的需求&#xff0c;创建了一个计算机管理东大每日推购物推荐网站的方案。文章介…...

【Unity3D插件】Unity3D HDRP Outline高亮发光轮廓描边插件教程

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 最近用Unity3D的HDRP&#xff08;高清渲染管…...

QT基础 UI编辑器 QT5.12.3环境 C++环境

一、UI编辑器 注意&#xff1a;创建工程时&#xff0c;要勾上界面按钮 UI设计师界面的模块 UI编辑器会在项目构建目录中自动生成一个ui_xxx.h&#xff08;构建一次才能生成代码&#xff09;&#xff0c;来表示ui编辑器界面的代码&#xff0c;属于自动生成的&#xff0c;一定不…...

计算机网络socket编程(5)_TCP网络编程实现echo_server

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交…...

go语言闭包捕获的是变量的引用而不是变量的值

在 Go 语言中&#xff0c;闭包捕获的是变量的引用&#xff0c;而不是变量的值。这意味着闭包会引用循环变量或外部变量的实际内存位置&#xff0c;而不是在闭包创建时复制变量的值。这种行为有时会导致意外的结果&#xff0c;尤其是在循环中创建多个闭包时。 闭包捕获变量的引…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...