zoukankan      html  css  js  c++  java
  • 实验9

    #include "opencv2/imgcodecs.hpp"
    #include "opencv2/highgui.hpp"
    #include "opencv2/imgproc.hpp"
    #include <iostream>
    using namespace std;
    using namespace cv;
    bool use_mask;
    Mat img; Mat templ; Mat mask; Mat result;
    const char* image_window = "Source Image";
    const char* result_window = "Result window";
    int match_method;
    int max_Trackbar = 5;
    void MatchingMethod( int, void* );
    int main()
    {
      img = imread( "/Users/war/Downloads/nk.jpg", IMREAD_COLOR );
      templ = imread( "/Users/war/Downloads/nk_eye.png", IMREAD_COLOR );
        
      if(img.empty() || templ.empty() || (use_mask && mask.empty()))
      {
        cout << "Can't read one of the images" << endl;
        return EXIT_FAILURE;
      }
      namedWindow( image_window, WINDOW_AUTOSIZE );
      namedWindow( result_window, WINDOW_AUTOSIZE );
      const char* trackbar_label = "Method: 
     0: SQDIFF 
     1: SQDIFF NORMED 
     2: TM CCORR 
     3: TM CCORR NORMED 
     4: TM COEFF 
     5: TM COEFF NORMED";
      createTrackbar( trackbar_label, image_window, &match_method, max_Trackbar, MatchingMethod );
      MatchingMethod( 0, 0 );
      waitKey(0);
      return EXIT_SUCCESS;
    }
    void MatchingMethod( int, void* )
    {
      Mat img_display;
      img.copyTo( img_display );
      int result_cols =  img.cols - templ.cols + 1;
      int result_rows = img.rows - templ.rows + 1;
      result.create( result_rows, result_cols, CV_32FC1 );
      bool method_accepts_mask = (TM_SQDIFF == match_method || match_method == TM_CCORR_NORMED);
      if (use_mask && method_accepts_mask)
        { matchTemplate( img, templ, result, match_method, mask); }
      else
        { matchTemplate( img, templ, result, match_method); }
      normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
      double minVal; double maxVal; Point minLoc; Point maxLoc;
      Point matchLoc;
      minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );
      if( match_method  == TM_SQDIFF || match_method == TM_SQDIFF_NORMED )
        { matchLoc = minLoc; }
      else
        { matchLoc = maxLoc; }
      rectangle( img_display, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
      rectangle( result, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
      imshow( image_window, img_display );
      imshow( result_window, result );
      return;
    }

  • 相关阅读:
    623. Add One Row to Tree 将一行添加到树中
    771. Jewels and Stones 珠宝和石头
    216. Combination Sum III 组合总数三
    384. Shuffle an Array 随机播放一个数组
    382. Linked List Random Node 链接列表随机节点
    向github项目push代码后,Jenkins实现其自动构建
    centos下安装Jenkins
    python提取批量文件内的指定内容
    批处理实现:批量为文件添加注释
    python抓取每期双色球中奖号码,用于分析
  • 原文地址:https://www.cnblogs.com/war1111/p/13953225.html
Copyright © 2011-2022 走看看