首页 > 其他分享 >VisionPro 机器视觉案例 之 凹点检测

VisionPro 机器视觉案例 之 凹点检测

时间:2024-11-26 23:29:50浏览次数:9  
标签:ConvexHull VisionPro double list 凹点 斑点 视觉 工具

第十六篇 机器视觉案例 之 凹点检测

文章目录

1.案例要求

检测两个凹点的坐标
在这里插入图片描述

在这里插入图片描述

2.实现思路

2.1 方式一:斑点工具加画线工具加点线距离工具

  • 设置斑点工具的区域在这里插入图片描述

  • 在靠近凹点的一侧画一条垂直的直线在这里插入图片描述

  • 循环遍历斑点图像的每一个点到到直线的距离,距离最短的两个区域即为凹点区域,对应的点就是凹点

2.2 方法二 使用斑点工具的结果集边缘坐标的横坐标最大值ImageBoundMaxX

  • 同方法一设置斑点工具的区域,将极性设置为黑底白点在这里插入图片描述
  • 此时斑点边缘最右侧的点即凹点

2.3 方法三 使用斑点工具的结果集凹点结果集 ConvexHull()

  • 同方法二斑点工具的区域和极性设置在这里插入图片描述
  • ConvexHull在这里插入图片描述

3.使用控件

3.1 斑点工具 —— CogBlobTool

  • 设定区域
  • 使用结果集ConvexHull/GetVertexX

3.2 画线工具 —— CogCreateLineTool

3.3 点到线距离工具 —— CogDistancePointLineTool

4.代码逻辑

using System.Collections.Generic;
//引入list列表的相关命名空间
//定义一个point类用于存贮坐标点
public class Point
{
 public double x ;
 public double y ;
  public Point(double x,double y)
  {
    this.x = x;
    this.y = y;
  }  
}
  private CogGraphicCollection gc = new CogGraphicCollection();
  private List<Point> list = new List<Point>();
CogBlobTool cbt = mToolBlock.Tools["CogBlobTool1"] as CogBlobTool;
    int count = cbt.Results.GetBlobs()[0].GetBoundary().ConvexHull().GetVertices().Length / 2;
    CogGraphicLabel l = new CogGraphicLabel();
    l.SetXYText(100, 100, count.ToString());
    gc.Add(l);
    
    for(int i = 0 ;i < count ;i++)
    {
      double x = cbt.Results.GetBlobByID(0).GetBoundary().ConvexHull().GetVertexX(i);
      double y = cbt.Results.GetBlobByID(0).GetBoundary().ConvexHull().GetVertexY(i);
      list.Add(new Point(x,y));
    }
    list.Sort((p1,p2) => p1.x.CompareTo(p2.x));
    list.Reverse();
    for(int i = 0;i < 3;i++)
    {
      CogCircle c = new CogCircle();
      c.Color = CogColorConstants.Red;
      c.CenterX = list[i].x;
      c.CenterY = list[i].y;
      c.LineWidthInScreenPixels = 4;
      c.Radius = 2;
      gc.Add(c);
    }
    
   

5.实现效果

在这里插入图片描述

在这里插入图片描述

6.知识点总结

6.1 坐标排序

list.Sort((p1,p2) => p1.x.CompareTo(p2.x));
list.Reverse();

标签:ConvexHull,VisionPro,double,list,凹点,斑点,视觉,工具
From: https://blog.csdn.net/m0_63509358/article/details/144068701

相关文章

  • 自动驾驶之心全套首个基于Transformer的分割检测 视觉大模型视频课程
    网课学习的好处有哪些1、学生学习自主性强:资料地址https://pan.baidu.com/s/1GIsMJ9BGgjgbJCrsVNDi6A?pwd=2q49当学生在面对电脑时,会有一种自己未来掌握在自己手中的感觉,所有的操作完全由自己掌控,真正发挥学习的主观能动性。2、学生非限性学习:网络学习的学生不受年龄的限制,同......
  • w~视觉~合集25
    我自己的原文哦~  https://blog.51cto.com/whaosoft/12627822#MeanShift简单的介绍 MeanShift的数学原理和代码实现,基于均值漂移法MeanShift的图像分割MeanShift算法简介从分割到聚类对于图像分割算法,一个视角就是将图像中的某些点集分为一类(前景),另外一些点集......
  • 机器视觉软件有哪些?
    机器视觉被称为“工业之眼”,底层逻辑是利用机器代替人工,对物体进行识别、测量,并做出判断。硬件负责成像,相当于人的“眼睛”,包括光源及光源控制器、镜头和工业相机;软件负责图像处理分析,相当于“大脑的视觉皮层”,二者一起构成机器视觉产业链的上游,是体现竞争力的关键环节‌。全......
  • 三、计算机视觉_08YOLO目标检测
    0、前言YOLO作为目前CV领域的扛把子,分类、检测等任务样样精通,本文将基于两个小案例,用YOLO做检测任务,看看效果如何1、对图片内容做检测假设我有一张名为picture.jpeg的图片,其内容如下我将图片和代码放到了同级目录代码如下:fromultralyticsimportYOLOimportcv2impor......
  • 【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函
    引言自动检测图像中的圆形或圆形对象,并可视化检测到的圆形。函数详解imfindcirclesimfindcircles是MATLAB中的一个函数,用于在图像中检测并找出圆形区域。基本语法:[centers,radii]=imfindcircles(A,radiusRange)[centers,radii,metric]=imfindcircles(A,rad......
  • 【触想智能】工业一体机在工业机器视觉领域应用的特点与注意事项
    随着工业化的进程和技术的不断发展,工业机器视觉成为现代工业生产中不可或缺的一部分。作为工业机器视觉技术的核心组件之一,工业一体机因其便携、集成度高和易于操作的特点,在工业机器视觉应用中得到广泛应用。触想工业一体机TPC-W500系列一、工业一体机在工业机器视......
  • Yolo11改进策略:Block改进|VOLO,视觉识别中的视觉展望器|即插即用|附代码+改进方法
    摘要论文介绍VOLO模型概述:本文提出了一种名为VOLO的视觉识别模型,该模型旨在通过创新的注意力机制——前景器(Outlooker)来提高视觉识别的性能。VOLO模型在ImageNet等基准测试上取得了优异的结果。研究背景:传统的视觉Transformer(ViT)模型在全局依赖性建模上表现出色,但在将精......
  • 计算机视觉算法
    计算机视觉算法是一种使用计算机科学和数学方法来模拟人类视觉系统的算法。它涉及图像处理、模式识别和机器学习等技术,用于分析和理解图像或视频中的内容。常见的计算机视觉算法包括物体检测、图像分类、目标跟踪、人脸识别等。这里列举几种常见的计算机视觉算法:物体检测算......
  • 基于 C# 的计算机视觉应用开发实战
    随着人工智能(AI)技术的不断发展,计算机视觉(ComputerVision)作为AI领域的一个重要分支,已经在各行各业得到了广泛的应用。从人脸识别、图像分类、目标检测,到自动驾驶、工业检测和医疗影像分析,计算机视觉在现代技术中的地位愈发重要。在这个过程中,C#作为一门强类型、面向对象的......
  • 震撼视觉呈现:AIGC 打造视觉盛宴
    目录一.AIGC在艺术领域的应用1.绘画2.雕塑3.装置艺术三.AIGC在设计领域的应用1.平面设计2.UI/UX设计3.室内设计四.AIGC在影视领域的应用1.特效制作2.场景搭建3.角色设计五.AIGC带来的挑战与机遇1.挑战(1).版权问题(2).伦理问题(3).就业问题2.机遇(1).......