欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > VisionPro 机器视觉案例 之 凹点检测

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

2024/11/30 18:14:39 来源:https://blog.csdn.net/m0_63509358/article/details/144068701  浏览:    关键词:VisionPro 机器视觉案例 之 凹点检测

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

文章目录

  • 第十六篇 机器视觉案例 之 凹点检测
    • 1.案例要求
    • 2.实现思路
      • 2.1 方式一:斑点工具加画线工具加点线距离工具
      • 2.2 方法二 使用斑点工具的结果集边缘坐标的横坐标最大值ImageBoundMaxX
      • 2.3 方法三 使用斑点工具的结果集凹点结果集 ConvexHull()
    • 3.使用控件
      • 3.1 斑点工具 —— CogBlobTool
      • 3.2 画线工具 —— CogCreateLineTool
      • 3.3 点到线距离工具 —— CogDistancePointLineTool
    • 4.代码逻辑
    • 5.实现效果
    • 6.知识点总结
      • 6.1 坐标排序

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();

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com