Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
4ae5de7f
Commit
4ae5de7f
authored
Jul 04, 2011
by
Ana Huaman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added MatchTemplate_Demo.cpp to tutorial sample code
parent
b33224f0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
90 additions
and
0 deletions
+90
-0
MatchTemplate_Demo.cpp
.../tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp
+90
-0
No files found.
samples/cpp/tutorial_code/Histograms_Matching/MatchTemplate_Demo.cpp
0 → 100644
View file @
4ae5de7f
/**
* @file MatchTemplate_Demo.cpp
* @brief Sample code to use the function MatchTemplate
* @author OpenCV team
*/
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using
namespace
std
;
using
namespace
cv
;
/// Global Variables
Mat
img
;
Mat
templ
;
Mat
result
;
char
*
image_window
=
"Source Image"
;
char
*
result_window
=
"Result window"
;
int
match_method
;
int
max_Trackbar
=
5
;
/// Function Headers
void
MatchingMethod
(
int
,
void
*
);
/**
* @function main
*/
int
main
(
int
argc
,
char
**
argv
)
{
/// Load image and template
img
=
imread
(
argv
[
1
],
1
);
templ
=
imread
(
argv
[
2
],
1
);
/// Create windows
namedWindow
(
image_window
,
CV_WINDOW_AUTOSIZE
);
namedWindow
(
result_window
,
CV_WINDOW_AUTOSIZE
);
/// Create Trackbar
char
*
trackbar_label
=
"Method:
\n
0: SQDIFF
\n
1: SQDIFF NORMED
\n
2: TM CCORR
\n
3: TM CCORR NORMED
\n
4: TM COEFF
\n
5: TM COEFF NORMED"
;
createTrackbar
(
trackbar_label
,
image_window
,
&
match_method
,
max_Trackbar
,
MatchingMethod
);
MatchingMethod
(
0
,
0
);
waitKey
(
0
);
return
0
;
}
/**
* @function MatchingMethod
* @brief Trackbar callback
*/
void
MatchingMethod
(
int
,
void
*
)
{
/// Source image to display
Mat
img_display
;
img
.
copyTo
(
img_display
);
/// Create the result matrix
int
result_cols
=
img
.
cols
-
templ
.
cols
+
1
;
int
result_rows
=
img
.
rows
-
templ
.
rows
+
1
;
result
.
create
(
result_cols
,
result_rows
,
CV_32FC1
);
/// Do the Matching and Normalize
matchTemplate
(
img
,
templ
,
result
,
match_method
);
normalize
(
result
,
result
,
0
,
1
,
NORM_MINMAX
,
-
1
,
Mat
()
);
/// Localizing the best match with minMaxLoc
double
minVal
;
double
maxVal
;
Point
minLoc
;
Point
maxLoc
;
Point
matchLoc
;
minMaxLoc
(
result
,
&
minVal
,
&
maxVal
,
&
minLoc
,
&
maxLoc
,
Mat
()
);
/// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
if
(
match_method
==
CV_TM_SQDIFF
||
match_method
==
CV_TM_SQDIFF_NORMED
)
{
matchLoc
=
minLoc
;
}
else
{
matchLoc
=
maxLoc
;
}
/// Show me what you got
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
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment