Detecting Circles
Circle detection finds circular shapes in images. It is used in coin detection, ball tracking, iris detection, and quality control inspections.
8 min•By Priygop Team•Updated 2026
Hough Circle Detection
Hough Circle Detection
import cv2
import numpy as np
image = cv2.imread("photo.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (9, 9), 2)
# HoughCircles detects circles directly (no edge detection needed first)
circles = cv2.HoughCircles(
blurred,
method=cv2.HOUGH_GRADIENT,
dp=1, # Inverse ratio of accumulator resolution
minDist=50, # Minimum distance between circle centres
param1=100, # Canny high threshold (internal)
param2=30, # Accumulator threshold (lower = more circles, less accurate)
minRadius=10, # Minimum circle radius in pixels
maxRadius=200 # Maximum circle radius in pixels
)
result = image.copy()
if circles is not None:
circles = np.uint16(np.around(circles))
for circle in circles[0, :]:
cx, cy, r = circle[0], circle[1], circle[2]
cv2.circle(result, (cx, cy), r, (0, 255, 0), 2) # Draw circle
cv2.circle(result, (cx, cy), 3, (0, 0, 255), -1) # Draw centre
print(f"Circle: centre=({cx},{cy}), radius={r}px")
print(f"Total circles found: {len(circles[0])}")
else:
print("No circles detected — try adjusting param2 (lower = more sensitive)")
cv2.imwrite("circles_detected.jpg", result)Diagram
Loading diagram…
Machine Learning follows a structured pipeline from data to deployment