• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

C#视觉检测-模板匹配

武飞扬头像
华山自控编程
帮助1

前几天一个学员在学习C#与视觉交互时,也不知道视觉可以用来做什么 。下面我们就详细讲讲C# 和视觉交互的相关知识。

C#和Halcon的视觉交互在工业生产和智能制造领域中得到了广泛应用。其中,模板匹配是一种简单但有效的图像处理技术,可以用于检测和定位物体。本文将介绍C#和Halcon的视觉交互中的模板匹配技术。

一、C#与Halcon的连接

C#作为微软开发的一种面向对象的编程语言,具有良好的可扩展性和兼容性,可以轻松地与Halcon进行连接。要连接C#和Halcon,需要使用Halcon/.NET接口。此外,还需要下载安装Halcon运行时库并将其添加到C#项目中。

二、Halcon中的模板匹配

Halcon中的模板匹配是一种基于特征点或形状的图像处理技术。该技术通过比较输入图像与参考图像之间的像素值差异来检测并定位物体。其基本流程如下:

1. 选择参考图像

2. 提取特征或形状信息

3. 将信息存储为模板

4. 输入待匹配图像

5. 按照相同方式提取特征或形状信息

6. 在输入图像中搜索最佳匹配

三、C#实现模板匹配

在C#项目中实现模板匹配,需要使用Halcon/.NET接口。首先,需要创建一个Halcon的HObject对象来存储图像数据。然后,通过调用Halcon的模板匹配函数来实现匹配过程。具体步骤如下:

1. 加载参考图像和待匹配图像

2. 创建HALCON对象并将图像数据加载到对象中

3. 提取特征或形状信息并将其存储为模板

4. 在待匹配图像中搜索最佳匹配

5. 获取匹配结果并进行处理

下面是一个简单的C#代码示例,用于实现基于Halcon的模板匹配:

// 加载参考图像和待匹配图像

HObject referenceImage, matchImage;

HOperatorSet.ReadImage(out referenceImage, "reference.png");

HOperatorSet.ReadImage(out matchImage, "match.png");

// 创建HALCON对象并将图像数据加载到对象中

HObject referenceObject, matchObject;

HOperatorSet.GenEmptyObj(out referenceObject);

HOperatorSet.GenEmptyObj(out matchObject);

HOperatorSet.DispObj(referenceImage, WindowHandle);

HOperatorSet.DispObj(matchImage, WindowHandle);

// 提取特征或形状信息并将其存储为模板

HObject modelRegion;

HTuple modelID;

HOperatorSet.CreateShapeModel(referenceObject, "auto", new HTuple(-0.39), new HTuple(0.79), new HTuple("point_reduction_high"), new HTuple("ignore_local_polarity"), new HTuple(5), out modelID);

HOperatorSet.GetShapeModelContours(out modelRegion, modelID, 1);

// 搜索最佳匹配

HTuple row, column, angle, score;

HOperatorSet.FindShapeModel(matchObject, modelID, new HTuple(-0.39), new HTuple(0.79), 0.5, 1, 0.5, "least_squares", new HTuple(6), new HTuple(0.7), out row, out column, out angle, out score);

// 获取匹配结果并进行处理

if (score > 0.9)

{

// 匹配成功

HOperatorSet.DispObj(matchObject, WindowHandle);

HOperatorSet.SetColor(WindowHandle, "green");

HOperatorSet.SetLineWidth(WindowHandle, 2);

HOperatorSet.DispRectangle2(WindowHandle, row, column, angle, 50, 50);

}

else

{

// 匹配失败

MessageBox.Show("Match failed!");

}

在上述代码中,我们首先加载参考图像和待匹配图像,并创建HALCON对象来存储图像数据。然后,我们使用Halcon的CreateTemplate函数提取参考图像的特征或形状信息,并将其存储为模板。接下来,我们使用FindTemplate函数在待匹配图像中搜索最佳匹配,并获取匹配结果。最后,我们根据匹配结果进行处理,如果匹配成功,则在图像中绘制矩形框。

原始图片:

学新通

模板匹配后的图片:

学新通

学新通

四、总结

本文介绍了C#和Halcon的视觉交互中的模板匹配技术。模板匹配是一种简单但有效的图像处理技术,可以用于检测和定位物体。在C#项目中实现模板匹配,需要使用Halcon/.NET接口,并按照基本流程加载图像、提取特征或形状信息、将信息存储为模板、搜索最佳匹配并获取匹配结果。通过C#和Halcon的视觉交互,我们可以实现更加智能化和高效化的工业生产和智能制造

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfkbjb
系列文章
更多 icon
同类精品
更多 icon
继续加载