ncc模板匹配 c#
时间: 2023-09-11 11:05:10 浏览: 167
在C#中进行NCC(Normalized Cross-Correlation)模板匹配,你可以使用Emgu CV(OpenCV的一个C#封装库)。以下是一个简单的示例代码:
```csharp
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
class Program
{
static void Main(string[] args)
{
// 加载源图像和模板图像
Image<Bgr, byte> sourceImage = new Image<Bgr, byte>("source.jpg");
Image<Bgr, byte> templateImage = new Image<Bgr, byte>("template.jpg");
// 创建结果图像
Image<Gray, float> resultImage = new Image<Gray, float>(
sourceImage.Width - templateImage.Width + 1,
sourceImage.Height - templateImage.Height + 1);
// 执行模板匹配
CvInvoke.MatchTemplate(
sourceImage, templateImage, resultImage,
TemplateMatchingType.CcorrNormed);
// 查找最佳匹配位置
double minVal, maxVal;
Point minLoc, maxLoc;
CvInvoke.MinMaxLoc(resultImage, out minVal, out maxVal, out minLoc, out maxLoc);
// 在源图像上绘制矩形框表示匹配位置
Rectangle matchRect = new Rectangle(maxLoc, templateImage.Size);
CvInvoke.Rectangle(sourceImage, matchRect, new Bgr(0, 0, 255).MCvScalar, 2);
// 显示结果
CvInvoke.Imshow("Source Image", sourceImage);
CvInvoke.WaitKey(0);
}
}
```
请确保已经安装了Emgu CV库,并将源图像和模板图像替换为实际的图像文件路径。上述代码加载源图像和模板图像,执行NCC模板匹配,然后在源图像上绘制匹配位置的矩形框。
希望对你有帮助!如有任何疑问,请随时向我提问。