Image Contours¶
Class: ImageContoursDetectionBlockV1
Source: inference.core.workflows.core_steps.classical_cv.contours.v1.ImageContoursDetectionBlockV1
Detect and extract contours (boundaries of shapes) from a thresholded binary or grayscale image using OpenCV's contour detection, drawing the detected contours on the image, and returning contour data including coordinates, hierarchy information, and count for shape analysis, object boundary detection, and contour-based image processing workflows.
How This Block Works¶
This block detects contours (connected boundaries of shapes) in an image and draws them for visualization. The block:
- Receives an input image that should be thresholded (binary or grayscale) for best results
- Converts the image to grayscale if it's in color (handles BGR color images by converting to grayscale)
- Detects contours using OpenCV's findContours function:
- Uses RETR_EXTERNAL retrieval mode to find only external contours (outer boundaries of shapes)
- Uses CHAIN_APPROX_SIMPLE approximation method to compress contour points (reduces redundant points)
- Detects all connected boundary points that form closed or open contours
- Returns contours as arrays of points and hierarchy information describing contour relationships
- Draws detected contours on the image:
- Converts the grayscale image back to BGR color format for visualization
- Draws all contours on the image using a configurable line thickness
- Uses purple color (255, 0, 255 in BGR) by default for contour lines
- Draws contours directly on the image for visual inspection
- Counts the total number of contours detected in the image
- Returns the image with contours drawn, the contours data (point arrays), hierarchy information, and the contour count
The block expects a thresholded (binary) image where objects are white and background is black (or vice versa) for optimal contour detection. Contours are detected as the boundaries between different pixel intensity regions. The RETR_EXTERNAL mode focuses on outer boundaries, ignoring internal holes, which is useful for detecting separate objects. The CHAIN_APPROX_SIMPLE method simplifies contours by removing redundant points along straight lines, making the contour data more compact while preserving essential shape information.
Common Use Cases¶
- Shape Detection and Analysis: Detect and analyze shapes in images by finding their boundaries (e.g., detect object boundaries for shape analysis, identify geometric shapes, extract shape outlines for measurement), enabling shape-based image analysis workflows
- Object Boundary Extraction: Extract object boundaries and outlines from thresholded images (e.g., extract object boundaries for further processing, identify object edges, detect object outlines in binary images), enabling boundary extraction workflows
- Image Segmentation Analysis: Analyze segmentation results by detecting contour boundaries (e.g., find contours from segmentation masks, analyze segmented regions, extract boundaries from segmented objects), enabling segmentation analysis workflows
- Quality Control and Inspection: Use contour detection for quality control and inspection tasks (e.g., detect defects by finding unexpected contours, verify object shapes, inspect object boundaries), enabling contour-based quality control workflows
- Object Counting: Count objects in images by detecting their contours (e.g., count objects by detecting contours, enumerate objects based on boundaries, quantify items using contour detection), enabling contour-based object counting workflows
- Measurement and Analysis: Use contours for measurements and geometric analysis (e.g., measure object perimeters using contours, analyze object shapes, calculate geometric properties from contours), enabling contour-based measurement workflows
Connecting to Other Blocks¶
This block receives a thresholded image and produces contour data and visualizations:
- After image thresholding blocks to detect contours in thresholded binary images (e.g., find contours after thresholding, detect shapes in binary images, extract boundaries from thresholded images), enabling thresholding-to-contour workflows
- After image preprocessing blocks that prepare images for contour detection (e.g., detect contours after preprocessing, find shapes after filtering, extract boundaries after enhancement), enabling preprocessed contour detection workflows
- After segmentation blocks to extract contours from segmentation results (e.g., find contours from segmentation masks, detect boundaries of segmented regions, extract shape outlines from segments), enabling segmentation-to-contour workflows
- Before visualization blocks to display contour visualizations (e.g., visualize detected contours, display shape boundaries, show contour analysis results), enabling contour visualization workflows
- Before analysis blocks that process contour data (e.g., analyze contour shapes, process contour coordinates, measure contour properties), enabling contour analysis workflows
- Before filtering or logic blocks that use contour count or properties for decision-making (e.g., filter based on contour count, make decisions based on detected shapes, apply logic based on contour properties), enabling contour-based conditional workflows
Requirements¶
The input image should be thresholded (converted to binary/grayscale) before using this block. Thresholded images have distinct foreground (white) and background (black) regions, which makes contour detection more reliable. Use thresholding blocks (e.g., Image Threshold) or segmentation blocks to prepare images before contour detection.
Type identifier¶
Use the following identifier in step "type" field: roboflow_core/contours_detection@v1to add the block as
as step in your workflow.
Properties¶
| Name | Type | Description | Refs |
|---|---|---|---|
name |
str |
Enter a unique identifier for this step.. | ❌ |
line_thickness |
int |
Thickness of the lines used to draw contours on the output image. Must be a positive integer. Thicker lines (e.g., 5-10) make contours more visible but may obscure fine details. Thinner lines (e.g., 1-2) show more detail but may be harder to see. Default is 3, which provides good visibility. Adjust based on image size and desired visibility. Use thicker lines for large images or when contours need to be highly visible, thinner lines for detailed analysis or small images.. | ✅ |
The Refs column marks possibility to parametrise the property with dynamic values available
in workflow runtime. See Bindings for more info.
Available Connections¶
Compatible Blocks
Check what blocks you can connect to Image Contours in version v1.
- inputs:
Heatmap Visualization,Image Slicer,Polygon Zone Visualization,Line Counter,Contrast Enhancement,Stability AI Image Generation,Image Threshold,Line Counter Visualization,Trace Visualization,Distance Measurement,Image Stack,Blur Visualization,Camera Calibration,Depth Estimation,QR Code Generator,Stability AI Outpainting,Detection Event Log,Icon Visualization,SIFT Comparison,Morphological Transformation,Background Subtraction,Keypoint Visualization,Color Visualization,Perspective Correction,Bounding Box Visualization,Corner Visualization,Stitch Images,Halo Visualization,Image Blur,Image Convert Grayscale,Morphological Transformation,Camera Focus,Contrast Equalization,Halo Visualization,Stability AI Inpainting,Line Counter,Roboflow Visual Search,Classification Label Visualization,Triangle Visualization,Grid Visualization,Background Color Visualization,Mask Visualization,Ellipse Visualization,Pixelate Visualization,Reference Path Visualization,SIFT,Label Visualization,Image Slicer,Text Display,SIFT Comparison,Dot Visualization,Polygon Visualization,Crop Visualization,Dynamic Crop,Absolute Static Crop,Circle Visualization,Image Contours,Image Preprocessing,Polygon Visualization,Relative Static Crop,Camera Focus,Template Matching,Pixel Color Count,Model Comparison Visualization - outputs:
VLM As Classifier,MoonshotAI Kimi,Stability AI Image Generation,Trace Visualization,Qwen2.5-VL,Image Stack,Anthropic Claude,Icon Visualization,SIFT Comparison,Morphological Transformation,Color Visualization,SmolVLM2,LMM For Classification,Single-Label Classification Model,Perspective Correction,Corner Visualization,Clip Comparison,Halo Visualization,Dynamic Zone,Qwen-VL,Keypoint Detection Model,Email Notification,Halo Visualization,Object Detection Model,Google Gemma,Background Color Visualization,Ellipse Visualization,Email Notification,Twilio SMS/MMS Notification,Text Display,Polygon Visualization,Crop Visualization,Absolute Static Crop,Image Preprocessing,Template Matching,Relative Static Crop,OpenRouter,OpenAI,Florence-2 Model,VLM As Detector,OpenAI,Motion Detection,Heatmap Visualization,OCR Model,Perception Encoder Embedding Model,Blur Visualization,Barcode Detection,Depth Estimation,Instance Segmentation Model,Stability AI Outpainting,Anthropic Claude,YOLO-World Model,Google Gemini,Clip Comparison,Google Gemini,Background Subtraction,Keypoint Visualization,Buffer,Webhook Sink,Byte Tracker,Stitch Images,Florence-2 Model,Contrast Equalization,Mask Edge Snap,OpenAI,Qwen3-VL,Moondream2,VLM As Detector,Google Gemini,Triangle Visualization,Slack Notification,CLIP Embedding Model,Detections Stabilizer,SIFT,Multi-Label Classification Model,Image Contours,Keypoint Detection Model,VLM As Classifier,Pixel Color Count,GLM-OCR,Image Slicer,Polygon Zone Visualization,Contrast Enhancement,Google Gemma API,Time in Zone,Semantic Segmentation Model,Image Threshold,Line Counter Visualization,Semantic Segmentation Model,Stitch OCR Detections,Multi-Label Classification Model,Camera Calibration,QR Code Generator,Detection Offset,ByteTrack Tracker,Google Vision OCR,Twilio SMS Notification,Image Blur,Morphological Transformation,Camera Focus,Roboflow Vision Events,Stability AI Inpainting,PTZ Tracking (ONVIF),Classification Label Visualization,SAM2 Video Tracker,Stitch OCR Detections,Event Writer,Qwen3.5-VL,Grid Visualization,Mask Visualization,Llama 3.2 Vision,Dominant Color,Byte Tracker,Reference Path Visualization,Image Slicer,Label Visualization,Identify Outliers,Byte Tracker,SIFT Comparison,OPC UA Writer Sink,Dot Visualization,Identify Changes,Dynamic Crop,Detections Stitch,Circle Visualization,Llama 3.2 Vision,BoT-SORT Tracker,SAM3 Video Tracker,Camera Focus,Gaze Detection,Segment Anything 2 Model,MoonshotAI Kimi,Single-Label Classification Model,QR Code Detection,Qwen3.5,CogVLM,Object Detection Model,SAM 3 Interactive,Qwen 3.6 API,Detections Consensus,Bounding Box Visualization,Multi-Label Classification Model,LMM,OpenAI,SAM 3,Image Convert Grayscale,Instance Segmentation Model,EasyOCR,Roboflow Visual Search,Roboflow Dataset Upload,SAM 3,Instance Segmentation Model,Detections Classes Replacement,Keypoint Detection Model,Pixelate Visualization,Roboflow Dataset Upload,SORT Tracker,Instance Segmentation Model,Track Class Lock,Qwen 3.5 API,Object Detection Model,Anthropic Claude,MQTT Writer,Polygon Visualization,OC-SORT Tracker,SAM 3,Model Comparison Visualization,Single-Label Classification Model,Seg Preview
Input and Output Bindings¶
The available connections depend on its binding kinds. Check what binding kinds
Image Contours in version v1 has.
Bindings
-
input
image(image): Input image to detect contours from. Should be thresholded (binary or grayscale) for best results - thresholded images have distinct foreground and background regions that make contour detection more reliable. The image will be converted to grayscale automatically if it's in color format. Contours are detected as boundaries between different pixel intensity regions. Use thresholding blocks (e.g., Image Threshold) or segmentation blocks to prepare images before contour detection. The block detects external contours (outer boundaries) and draws them on the image..line_thickness(integer): Thickness of the lines used to draw contours on the output image. Must be a positive integer. Thicker lines (e.g., 5-10) make contours more visible but may obscure fine details. Thinner lines (e.g., 1-2) show more detail but may be harder to see. Default is 3, which provides good visibility. Adjust based on image size and desired visibility. Use thicker lines for large images or when contours need to be highly visible, thinner lines for detailed analysis or small images..
-
output
image(image): Image in workflows.contours(contours): List of numpy arrays where each array represents contour points.hierarchy(numpy_array): Numpy array.number_contours(integer): Integer value.
Example JSON definition of step Image Contours in version v1
{
"name": "<your_step_name_here>",
"type": "roboflow_core/contours_detection@v1",
"image": "$inputs.image",
"line_thickness": 3
}