C#视觉检测-模板匹配

news/2025/1/12 10:57:24/

前几天一个学员在学习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的视觉交互,我们可以实现更加智能化和高效化的工业生产和智能制造。


http://www.ppmy.cn/news/488845.html

相关文章

【编程语言 · C语言 · 指针和数组】

指针和数组 指针对于数组特别有用。 当定义各一个数组时, 系统会在内存中为该数组分配一个存储空间, 其数组的名称就是数组在内存中的首地址.若再定义各一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组. 例如: int *p, a[5]; pa; 这里a是数组名,…

Google C++ Style文档及常用代码规范(一):命名约定、格式、注释

文章目录 Google C Style文档及常用代码规范(一):命名约定、格式、注释命名约定通用命名规则文件命名类型命名变量命名常量命名函数命名命名空间命名枚举命名宏命名命名规则的特例 格式注释注释风格文件注释类注释函数注释变量注释类数据成员…

dp主机_显示器有哪些接口?我来告诉你DP、HDMI、VGA、DVI有什么区别?

显示的接口有很多种类型,选购主机和显示器时,接口类型是我们需要考虑的因素,目前显示器的的接口有DP HDMI VGA DVI这几种,这些接口的形状也都不同,我们在选购主机的时候,一般都要考虑主机的显卡接口是否与显…

dp线长什么样子_主机dvi接口是什么样子(VGA、DVI、HDMI、DP四种主流接口知识)...

一般来说,显示器选择哪一种连接线是显卡显示接口与显示器显示接口决定的,也就是说,如果您的显示器或者显卡上其中一个没有DP接口,那么是无法使用DP接口的 当然如果显示器和显卡同时有DP、HDMI、DVI等接口,那么这种情况…

linux dp接口显示,什么是DP接口?DP接口有哪些用处?

原标题:什么是DP接口?DP接口有哪些用处? DisplayPort(简称DP)是一个由PC及芯片制造商联盟开发,视频电子标准协会标准化的数字式视频接口标准。它是第一个依赖数据包化数据传输技术的显示通信端口。 DP接口主要用于视频源与显示器等设备的连接,并也支持携带音频、USB和其他…

显示器接口VGA、DVI、HDMI、DP

1.说明 对于显示器接口类型, 常见的接口有VGA、DVI、HDMI、DP这四种, 当然还有其他类型接口, 本文主要介绍上面四种接口, 介绍接口的基本规格参数和外形等, 以及这四种接口之间的联系和区别。 2.VGA VGA接口Video Grap…

CS5218 DP转HDMI 4K30HZ转换方案

CS5218适用范围 CS5218 简介 Capstone CS5218AN 是一款单端口 HDMI/DVI 电平移位器/中继器,具有重新定时功能。它支持交流和直流耦合 TMDS 信号高达 3.0-Gbps 的操作与可编程均衡和抖动清洗。它包括 2 路双模 DP 电缆适配器寄存器,可用于识别电缆适配器…

硬件设计32之VGA、DVI、HDMI及DP介绍

1.显卡常见输出接口 显卡输出接口可以说在最近几年来"繁荣"了不少,可能大数网友依然还在使用最为"古老"的VGA输出接口,但随着高清显示技术的日益革新,显卡显示输出接口也随之相继"繁荣"起来,当然网友有了更多更好的显示输出解决方案,但同时…