Template Matching¶
Version v1
¶
Apply Template Matching to an image. Block is based on OpenCV library function called cv2.matchTemplate(...)
that searches for a template image within a larger image. This is often used in computer vision tasks where
you need to find a specific object or pattern in a scene, like detecting logos, objects, or
specific regions in an image.
Please take into account the following characteristics of block: * it tends to produce overlapping and duplicated predictions, hence we added NMS which can be disabled * block may find very large number of matches in some cases due to simplicity of methods being used - in that cases NMS may be computationally intractable and should be disabled
Output from the block is in a form of sv.Detections objects which can be nicely paired with other blocks accepting this kind of input (like visualization blocks).
Type identifier¶
Use the following identifier in step "type"
field: roboflow_core/template_matching@v1
to add the block as
as step in your workflow.
Properties¶
Name | Type | Description | Refs |
---|---|---|---|
name |
str |
The unique name of this step.. | ❌ |
matching_threshold |
float |
The threshold value for template matching.. | ✅ |
apply_nms |
bool |
Flag to decide if NMS should be applied at the output detections.. | ✅ |
nms_threshold |
float |
The threshold value NMS procedure (if to be applied).. | ✅ |
The Refs column marks possibility to parametrise the property with dynamic values available
in workflow
runtime. See Bindings for more info.
Available Connections¶
Check what blocks you can connect to Template Matching
in version v1
.
- inputs:
Blur Visualization
,Image Convert Grayscale
,Camera Focus
,Dot Visualization
,Corner Visualization
,Circle Visualization
,Triangle Visualization
,Relative Static Crop
,Absolute Static Crop
,Background Color Visualization
,Pixelate Visualization
,Polygon Visualization
,Image Threshold
,Label Visualization
,Crop Visualization
,Mask Visualization
,Image Contours
,Bounding Box Visualization
,Color Visualization
,Perspective Correction
,Halo Visualization
,SIFT
,Dynamic Crop
,Image Blur
,Ellipse Visualization
,Image Slicer
- outputs:
Detection Offset
,Detections Consensus
,Label Visualization
,Crop Visualization
,Roboflow Dataset Upload
,Detections Stitch
,Segment Anything 2 Model
,Blur Visualization
,Detections Classes Replacement
,Property Definition
,Bounding Box Visualization
,Dot Visualization
,Color Visualization
,Circle Visualization
,Corner Visualization
,Roboflow Custom Metadata
,Perspective Correction
,Triangle Visualization
,Detections Filter
,Background Color Visualization
,Roboflow Dataset Upload
,Detections Transformation
,Pixelate Visualization
,Dynamic Crop
,Ellipse Visualization
The available connections depend on its binding kinds. Check what binding kinds
Template Matching
in version v1
has.
Bindings
-
input
image
(image
): The input image for this step..template
(image
): The template image for this step..matching_threshold
(float
): The threshold value for template matching..apply_nms
(boolean
): Flag to decide if NMS should be applied at the output detections..nms_threshold
(float_zero_to_one
): The threshold value NMS procedure (if to be applied)..
-
output
predictions
(object_detection_prediction
): Prediction with detected bounding boxes in form of sv.Detections(...) object.number_of_matches
(integer
): Integer value.
Example JSON definition of step Template Matching
in version v1
{
"name": "<your_step_name_here>",
"type": "roboflow_core/template_matching@v1",
"image": "$inputs.image",
"template": "$inputs.template",
"matching_threshold": 0.8,
"apply_nms": "$inputs.apply_nms",
"nms_threshold": "$inputs.nms_threshold"
}