MCPcopy Create free account
hub / github.com/DennisLiu1993/Fastest_Image_Pattern_Matching / MatchTemplate

Method MatchTemplate

MatchTool/MatchToolDlg.cpp:1275–1311  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1273//#define ORG
1274
1275void CMatchToolDlg::MatchTemplate (cv::Mat& matSrc, s_TemplData* pTemplData, cv::Mat& matResult, int iLayer, BOOL bUseSIMD)
1276{
1277 if (m_ckSIMD.GetCheck () && bUseSIMD)
1278 {
1279 //From ImageShop
1280 matResult.create (matSrc.rows - pTemplData->vecPyramid[iLayer].rows + 1,
1281 matSrc.cols - pTemplData->vecPyramid[iLayer].cols + 1, CV_32FC1);
1282 matResult.setTo (0);
1283 cv::Mat& matTemplate = pTemplData->vecPyramid[iLayer];
1284
1285 int t_r_end = matTemplate.rows, t_r = 0;
1286 for (int r = 0; r < matResult.rows; r++)
1287 {
1288 float* r_matResult = matResult.ptr<float> (r);
1289 uchar* r_source = matSrc.ptr<uchar> (r);
1290 uchar* r_template, *r_sub_source;
1291 for (int c = 0; c < matResult.cols; ++c, ++r_matResult, ++r_source)
1292 {
1293 r_template = matTemplate.ptr<uchar> ();
1294 r_sub_source = r_source;
1295 for (t_r = 0; t_r < t_r_end; ++t_r, r_sub_source += matSrc.cols, r_template += matTemplate.cols)
1296 {
1297 *r_matResult = *r_matResult + IM_Conv_SIMD (r_template, r_sub_source, matTemplate.cols);
1298 }
1299 }
1300 }
1301 //From ImageShop
1302 }
1303 else
1304 matchTemplate (matSrc, pTemplData->vecPyramid[iLayer], matResult, CV_TM_CCORR);
1305
1306 /*Mat diff;
1307 absdiff(matResult, matResult, diff);
1308 double dMaxValue;
1309 minMaxLoc(diff, 0, &dMaxValue, 0,0);*/
1310 CCOEFF_Denominator (matSrc, pTemplData, matResult, iLayer);
1311}
1312void CMatchToolDlg::GetRotatedROI (Mat& matSrc, Size size, Point2f ptLT, double dAngle, Mat& matROI)
1313{
1314 double dAngle_radian = dAngle * D2R;

Callers

nothing calls this directly

Calls 1

IM_Conv_SIMDFunction · 0.70

Tested by

no test coverage detected