Как в opencvsharp вернуть координаты неточного фрагмента изображения?

Мне нужно найти фрагмент изображения в другом изображении, и вернуть его координаты, фрагмент изображения может незначительно отличаться от оригинала.

Код ниже, работа только с видео, как мне тоже самое сделать, но только с изображением?

using System;
using OpenCvSharp;

namespace EdgeDetect
{
    class Template
    {
        public Template()
        {
            CvCapture cap = CvCapture.FromCamera(1);
            CvWindow w = new CvWindow("Template Matching");

            IplImage tpl = Cv.LoadImage("speedlimit55.jpg", LoadMode.Color);

            CvPoint minloc, maxloc;
            double minval, maxval;

            while (CvWindow.WaitKey(10) < 0)
            {
                IplImage img = cap.QueryFrame();
                IplImage res = Cv.CreateImage(Cv.Size(img.Width - tpl.Width + 1, img.Height - tpl.Height + 1), BitDepth.F32, 1);
                Cv.MatchTemplate(img, tpl, res, MatchTemplateMethod.CCoeff);

                Cv.MinMaxLoc(res, out minval, out maxval, out minloc, out maxloc, null);
                Cv.Rectangle(img, Cv.Point(minloc.X, minloc.Y), Cv.Point(minloc.X + tpl.Width, minloc.Y + tpl.Height), CvColor.Red, 1, 0, 0);

                w.Image = img;

                Cv.ReleaseImage(res);
                Cv.ReleaseImage(img);
            }
        }
    }
}

Ответы (0 шт):