OpenCV——模板匹配


 

minMaxLoc函數:

void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat() ); 

說明: 

1 minMaxLoc尋找矩陣(一維數組當作向量,用Mat定義) 中最小值和最大值的位置.
2 參數若不需要,則置為NULL或者0,即可.
3 minMaxLoc針對Mat和MatND的重載中 ,第5個參數是可選的(optional),不使用不傳遞即可.

 1 //對視頻進行模板匹配操作
 2 #include <opencv2/opencv.hpp>
 3 #include <iostream>
 4 
 5 #define MATCHMETHOD TM_CCOEFF_NORMED//宏定義匹配模式
 6 using namespace cv;
 7 using namespace std;
 8 
 9 Mat src,resultImage;
10 
11 int main(int argc, char** argv)
12 {
13     VideoCapture capture("F:/2019視覺培訓內容/2019視覺培訓內容/4buff1.avi");
14     Mat digita_l=imread("F:/2019視覺培訓內容/2019視覺培訓內容/數字識別數據集/數碼管/1.png");
15     while (capture.read(src)) {
16         Mat frame;
17         src.copyTo(frame);
18 
19         //初始化輸出矩陣
20         int resultImage_cols = src.cols - digita_l.cols + 1;
21         int resultImage_rows = src.rows - digita_l.rows + 1;
22         resultImage.create(resultImage_cols,resultImage_rows,CV_32FC1);
23 
24         //進行匹配和標准化
25         matchTemplate(src, digita_l, resultImage, MATCHMETHOD);//滑動模板,將匹配程度依此放在resultImage中
26         normalize(resultImage, resultImage, 0, 1, NORM_MINMAX, -1, Mat());
27 
28         //定位最匹配位置
29         double minValue, maxValue;
30         Point minLocation, maxLocation, matchLocation;
31         minMaxLoc(resultImage,&minValue,&maxValue,&minLocation,&maxLocation,Mat());
32 
33         if(MATCHMETHOD== TM_SQDIFF|| MATCHMETHOD==TM_SQDIFF_NORMED)//這兩種方法,值越小匹配讀越高
34         {
35             matchLocation = minLocation;
36         }
37         else { matchLocation = maxLocation; }
38 
39         rectangle(frame, matchLocation, Point(matchLocation.x + digita_l.cols, matchLocation.y + digita_l.rows), Scalar(0, 0, 255), 2, 8, 0);
40 
41         imshow("匹配結果", frame);
42         imshow("結果圖", resultImage);
43 
44         char c = waitKey(100);//延時100ms
45         if (c == 27) //等待“Esc”
46         {
47             break;
48         }
49     }
50     capture.release();//釋放視頻的內存
51     waitKey(0);
52 
53     return 0;
54 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM