Ask Your Question

Template matching in webcam

asked 2014-01-08 15:50:24 -0500

updated 2020-11-02 17:17:17 -0500

Hello there, i have a question.

i have a program that does simple template matching. My question is, i want to make the source from my webcam and the result is showed on my webcam. Here's my code

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main() 
    cv::Mat ref = cv::imread("reference.png");
    cv::Mat tpl = cv::imread("template.png");
    if (ref.empty() || tpl.empty())
        return -1;

    cv::Mat gref, gtpl;
    cv::cvtColor(ref, gref, CV_BGR2GRAY);
    cv::cvtColor(tpl, gtpl, CV_BGR2GRAY);

    cv::Mat res(ref.rows-tpl.rows+1, ref.cols-tpl.cols+1, CV_32FC1);
    cv::matchTemplate(gref, gtpl, res, CV_TM_CCOEFF_NORMED);
    cv::threshold(res, res, 0.8, 1., CV_THRESH_TOZERO);

    while (true) 
        double minval, maxval, threshold = 0.8;
        cv::Point minloc, maxloc;
        cv::minMaxLoc(res, &minval, &maxval, &minloc, &maxloc);

        if (maxval >= threshold)
                cv::Point(maxloc.x + tpl.cols, maxloc.y + tpl.rows), 
                CV_RGB(0,255,0), 2
            cv::floodFill(res, maxloc, cv::Scalar(0), 0, cv::Scalar(.1), cv::Scalar(1.));

    cv::imshow("reference", ref);
    return 0;

Thank you for your attention. I wait for any of your response.

edit retag flag offensive close merge delete

1 answer

Sort by ยป oldest newest most voted

answered 2014-01-08 16:00:58 -0500

unxnut gravatar image

You need to move your image acquisition from webcam and template matching into the while loop. You should also have some way to terminate the loop. For example, you could make use of waitKey() to get a character from screen to terminate the loop.

edit flag offensive delete link more


how to acquisite the image from webcam ?

Kevin Phytagoras gravatar imageKevin Phytagoras ( 2014-01-09 03:02:14 -0500 )edit

Question Tools


Asked: 2014-01-08 15:50:24 -0500

Seen: 795 times

Last updated: Jan 08 '14