赞
踩
目标检测通过下面5个步骤得出结果
图例(上个扑克牌玩一下)
- // 1、读取图像
- Mat image = Cv2.ImRead("01.jpg", ImreadModes.Color);
- Mat template = Cv2.ImRead("0102.jpg", ImreadModes.Color);
-
- // 2、 使用cv2.matchTemplate()函数进行模板匹配
- Mat resultImage = new Mat();
- Cv2.MatchTemplate(image, template, resultImage, TemplateMatchModes.CCoeffNormed);
- //3、 获取匹配结果的最大值和最小值的位置
- double minVal, maxVal;
- Point minLoc, maxLoc;
- Cv2.MinMaxLoc(resultImage, out minVal, out maxVal, out minLoc, out maxLoc);
- //4、绘制矩形框标记匹配结果
- Rect rect = new Rect(maxLoc.X, maxLoc.Y, template.Width, template.Height);
- Cv2.Rectangle(image, rect, Scalar.Red, 2);
- //5、显示匹配结果
- Cv2.ImShow("Result", image);
- Cv2.WaitKey(0);
看结果
确实匹配到一个爱心,那么爱心只能一个,不甘心再来;
- // 1、读取图像
- Mat image = Cv2.ImRead("01.jpg", ImreadModes.Color);
- Mat template = Cv2.ImRead("0103.jpg", ImreadModes.Color);
- // 2、 使用cv2.matchTemplate()函数进行模板匹配
- Mat resultImage = new Mat();
- Cv2.MatchTemplate(image, template, resultImage, TemplateMatchModes.CCoeffNormed);
- //3、 获取匹配结果的最大值和最小值的位置
-
- // 设置匹配阈值
- double threshold = 0.81;
-
- // 获取匹配结果的最小值和最大值的位置
- while (true)
- {
- double minVal, maxVal;
- Point minLoc, maxLoc;
- Cv2.MinMaxLoc(resultImage, out minVal, out maxVal, out minLoc, out maxLoc);
-
- // 如果最大值小于阈值,则退出循环
- if (maxVal < threshold)
- break;
-
- // 在源图像上绘制矩形框
- //4、绘制矩形框标记匹配结果
- Rect rect = new Rect(maxLoc.X, maxLoc.Y, template.Width, template.Height);
- Cv2.Rectangle(image, rect, Scalar.Green, 1);
-
- // 将匹配结果置为0,以便找到下一个最大值
- Cv2.FloodFill(resultImage, maxLoc, Scalar.Black);
- }
-
- //5、显示匹配结果
- Cv2.ImShow("Result", image);
- Cv2.WaitKey(0);
结果出来了
imread()读取图像
c# OpenCvSharp读取、显示和写入图像(二)-CSDN博客
cv2.matchTemplate(image,template,result,method,mask)
matchTemplate()函数在图像处理中常用于目标检测、模板匹配等应用场景.
参数 | 解释 |
---|---|
image | 输入图像,可以是任意尺寸和通道数的图像。 |
template | 模板图像,必须与输入图像具有相同的通道数。 |
result | 输出图像,用于存储匹配结果。 |
method | 匹配方法,指定如何计算输入图像和模板图像之间的匹配程度。(方法如下表) |
mask | 可选参数,指定一个掩码图像,在匹配过程中只考虑掩码区域。 |
method方法
Cv2.MinMaxLoc(src, out minVal, out maxVal, out minLoc, out maxLoc);
Cv2.MinMaxLoc()是一个用于查找数组(或图像)中最小值、最大值及其位置的函数。它通常用于查找数组的范围或在图像上定位最亮和最暗的点。
参数 | 解释 |
---|---|
src | 输入图像(单通道,灰度图像) |
minVal | 图像中的最小值 |
maxVal | 图像中的最大值 |
minLoc | 最小值的位置(x,y)坐标 |
maxLoc | 最大值的位置(x,y)坐标 |
mask | 可选参数,指定一个掩码图像,在匹配过程中只考虑掩码区域。 |
Cv2.Rectangle()绘制矩形
c# OpenCvSharp基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)-CSDN博客
Cv2.ImShow()窗口中显示图像
c# OpenCvSharp读取、显示和写入图像(二)-CSDN博客
通过掌握这五个步骤,你可以在C#中使用OpenCvSharp实现目标检测。祝你成功!
c# OpenCvSharp安装(一)
c# OpenCvSharp读取、显示和写入图像(二)
c# OpenCvSharp图像裁剪、调整大小、旋转、透视(三)
c# OpenCvSharp基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)
c# OpenCvSharp 检测(斑点检测、边缘检测、轮廓检测)(五)
c# OpenCvSharp 轮廓绘制六步骤你学会了吗(六)
c# OpenCvSharp 目标检测五个步骤(又学会了)(七)
c# OpenCvSharp透视矫正六步实现透视矫正(八)
c# OpenCvSharp Cv2.Threshold()和Cv2.AdaptiveThreshold参数说明
c# OpenCvSharp透视矫正参数调整器
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。