【问题标题】:OpenCvSharp detect many part into imageOpenCvSharp 将许多部分检测到图像中
【发布时间】:2017-08-01 22:39:47
【问题描述】:

研究几种类型的图像的最佳方法是什么。 这些是真正不同的复杂图像。 我对在视频中搜索的每个图像都使用 MatchTemplate。 我需要知道我每次都在寻找什么样的图像。

这是正确的做法吗?对我寻求的图像的每个部分进行处理?

Mat finderone = ...........;
Mat findertwo = ...........;
Mat finder... = ...........;


var res1 = matSource.MatchTemplate(finderone,TemplateMatchModes.CCoeffNormed)
var res2 = matSource.MatchTemplatefindertwo,TemplateMatchModes.CCoeffNormed)
var res3 = matSource.MatchTemplate(.... , TemplateMatchModes.CCoeffNormed)

【问题讨论】:

    标签: opencvsharp


    【解决方案1】:

    您的方法可能是足够的,但它有几个限制。您的图案不应被旋转、缩放或遮挡。

    还有其他几种图像检测方法。例如,基于特征点,如SURF、SIFT等。 OpenCV 有很好的关于在图像中查找已知对象的教程:feature homography

    用opencvsharp也可以轻松实现。

    如果MatchTemplate 满足您的要求,并且您只想优化您的代码,那么这是不可能的,因为MatchTemplate 不能同时使用多个模板。您可以做的最好的事情是提高代码的可读性并将模板构建为单个垫子数组并在循环中检查它:

    Mat[] templates = new Mat[] { finderone, finder..., finder_N };
    Mat[] results = new Mat[templates.Lenght];
    for (int i = 0; i < templates.Length; ++i) {
        results[i] = sourceMat.MatchTemplate(templates[i], TemplateMatchModes.CCoeffNormed);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2017-12-21
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 2017-12-18
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多