Advertisement
yamaji14

テンプレートマッチング(サンプル)

Nov 20th, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <cv.h>
  2. #include <highgui.h>
  3.  
  4. int
  5. main (int argc, char **argv)
  6. {
  7.   double min_val, max_val;
  8.   CvPoint min_loc, max_loc;
  9.   CvSize dst_size;
  10.   IplImage *src_img, *tmp_img, *dst_img;
  11.  
  12.   if (argc != 3 ||
  13.       (src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_COLOR)) == 0 ||
  14.       (tmp_img = cvLoadImage (argv[2], CV_LOAD_IMAGE_COLOR)) == 0)
  15.     return -1;
  16.  
  17.   // (1)探索画像全体に対して,テンプレートのマッチング値(指定した手法に依存)を計算
  18.   dst_size = cvSize (src_img->width - tmp_img->width + 1, src_img->height - tmp_img->height + 1);
  19.   dst_img = cvCreateImage (dst_size, IPL_DEPTH_32F, 1);
  20.   cvMatchTemplate (src_img, tmp_img, dst_img, CV_TM_CCOEFF_NORMED);
  21.   cvMinMaxLoc (dst_img, &min_val, &max_val, &min_loc, &max_loc, NULL);
  22.  
  23.   // (2)テンプレートに対応する位置に矩形を描画
  24.   cvRectangle (src_img, max_loc,
  25.                cvPoint (max_loc.x + tmp_img->width, max_loc.y + tmp_img->height), CV_RGB (255, 0, 0), 3);
  26.   cvNamedWindow ("Image", 1);
  27.   cvShowImage ("Image", src_img);
  28.   cvWaitKey (0);
  29.  
  30.   cvDestroyWindow ("Image");
  31.   cvReleaseImage (&src_img);
  32.   cvReleaseImage (&tmp_img);
  33.   cvReleaseImage (&dst_img);
  34.  
  35.   return 0;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement