--------------------------
#pragma once
#include "cvbase.h"
class TemplateMatching :
public CVBase
{
public:
TemplateMatching(void);
~TemplateMatching(void);
void mainloop(void);
};
TemplateMatching.cpp
--------------------------
#include "TemplateMatching.h"
TemplateMatching::TemplateMatching(void)
{
}
TemplateMatching::~TemplateMatching(void)
{
}
void TemplateMatching::mainloop(void)
{
cv::Mat search_img = cv::imread("room7.png", 1);
if(search_img.empty()) return;
// テンプレート画像
cv::Mat tmp_img = cv::imread("room7_tmp_2.png", 1);
if(tmp_img.empty()) return;
cv::Mat result_img;
// テンプレートマッチング
cv::matchTemplate(search_img, tmp_img, result_img, CV_TM_CCOEFF_NORMED);
// 最大のスコアの場所を探す
cv::Rect roi_rect(0, 0, tmp_img.cols, tmp_img.rows);
cv::Point max_pt;
double maxVal;
cv::minMaxLoc(result_img, NULL, &maxVal, NULL, &max_pt);
roi_rect.x = max_pt.x;
roi_rect.y = max_pt.y;
std::cout << "(" << max_pt.x << ", " << max_pt.y << "), score=" << maxVal << std::endl;
// 探索結果の場所に矩形を描画
cv::rectangle(search_img, roi_rect, cv::Scalar(0,0,255), 3);
cv::namedWindow("search image", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
cv::namedWindow("result image", CV_WINDOW_AUTOSIZE|CV_WINDOW_FREERATIO);
cv::imshow("search image", search_img);
cv::imshow("result image", result_img);
cv::waitKey(0);
}
0 件のコメント:
コメントを投稿