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;
    }

  • 相关阅读:
    Oracle 的四种连接-左外连接、右外连接、内连接、全连接
    选择文件错误提示
    window 窗口编辑
    BufferedWriter与BufferedRead --------------------------Test2
    BufferedWriter与BufferedRead --------------------------Test
    BufferedInputStream 缓冲输入字节流 -------上
    IO异常 的处理 test
    IO异常 的处理
    Struts2概述、开发环境搭建
    Operation(自定义多线程)
  • 原文地址:https://www.cnblogs.com/war1111/p/13953225.html
Copyright © 2011-2022 走看看