细看都是坑(OpenCV中的matchTemplate方法)

最近利用OpenCV做2幅图像的比较,用的TM_CCORR_NORMED方法,发现对于图像中,有明确目标的情况下,匹配的结果较好,90+%;对于图像中没有明确目标,如基本黑色的情况下,返回值只有40-50%,或更低。可明明2幅黑色的图像也是类似的嘛,好不?只好再翻一下Learning OpenCV 3关于matchTemplate的说明:
####1. cv::TM_SQDIFF
计算模板与目标图像的方差,由于是像素值差值的平方的和,所以值越小匹配程度越高;
####2. cv::TM_SQDIFF_NORMED
范化的cv::TM_SQDIFF,取值为0-1之间,完美匹配返回值为0;
####3. cv::TM_CCORR
使用dot product计算匹配度(不清楚怎么计算dot product,没看过代码),越高匹配度就好;
####4. cv::TM_CCORR_NORMED
范化的cv::TM_CCORR,0-1之间,我用的这个;
####5. cv::TM_CCOEFF
采用模板与目标图像像素与各自图像的平均值计算dot product,正值越大匹配度越高,负值越大图像的区别越大,但如果图像没有明显的特征(即图像中的像素值与平均值接近)则返回值越接近0;
####6. cv::TM_CCOEFF_NORMED
范化的cv::TM_CCOEFF,-1 ~ 1之间。

从上面的几个方法中,6比较符合目前需求:没有明显的特征,但2幅图像还是非常接近的,so,改为方法cv::TM_CCOEFF_NORMED。

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
OpenCvSharpMatchTemplate函数是用来进行模板匹配的。在给定一张模板图片和一个待匹配图片后,MatchTemplate函数会返回一个匹配结果矩阵,该矩阵的每个元素代表了该位置与模板的匹配程度。在C#,可以使用Cv2.MatchTemplate函数来调用该功能。 在给定模板图片和待匹配图片后,通过调用Cv2.MatchTemplate函数,传入待匹配图片、模板图片、结果矩阵和匹配模式参数,即可进行模板匹配。结果矩阵的每个元素表示了对应位置的匹配程度,值越小匹配越差,最好的匹配结果为1。 为了得到最佳匹配的位置,可以使用Cv2.MinMaxLoc函数来找到匹配程度最高的位置。然后可以使用该位置信息,在待匹配图片上绘制一个矩形框来突出显示匹配结果。 需要注意的是,在使用OpenCvSharp进行图像处理时,需要先添加引用OpenCvSharp到项目,并使用using OpenCvSharp语句导入命名空间。 以下是一个模板匹配的示例代码: ```csharp using OpenCvSharp; // 加载模板和待匹配图片 Mat temp = new Mat("template.jpg", ImreadModes.AnyColor); Mat image = new Mat("image.jpg", ImreadModes.AnyColor); // 创建匹配结果矩阵 Mat result = new Mat(); // 进行模板匹配 Cv2.MatchTemplate(image, temp, result, TemplateMatchModes.CCoeffNormed); // 寻找最佳匹配位置 MinMaxLocResult minMaxLocResult = Cv2.MinMaxLoc(result); Point matchLoc = minMaxLocResult.MaxLoc; // 在待匹配图片上绘制矩形框 Cv2.Rectangle(image, matchLoc, new Point(matchLoc.X + temp.Cols, matchLoc.Y + temp.Rows), Scalar.Green, 2); // 显示结果 using (new Window("Template", temp)) using (new Window("Image", image)) { Cv2.WaitKey(); } ``` 希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值