Nền tảng OpenCV cung cấp thư viện cv2 cho Python. Dùng cho phân tích hình dạng hữu ích trong computer vision. Bài này nhận diện hình tròn dùng OpenCV. Sử dụng hàm cv2.HoughCircles(). Tìm hình tròn trong ảnh xám dùng biến đổi Hough.
Cú pháp
cv2.HoughCircles(image, method, dp, minDist) - image: file ảnh chuyển sang thang xám - method: thuật toán phát hiện tròn - dp: tỷ lệ ngược độ phân giải accumulator so với ảnh - minDist: khoảng cách tối thiểu giữa tâm các tròn phát hiện
Ví dụ
Dưới dùng ảnh input sau. Chạy chương trình phát hiện tròn.

Chương trình phát hiện tròn trong file ảnh. Nếu có tròn thì highlight.
Ví dụ
import cv2
import numpy as np
image = cv2.imread('circle_ellipse_2.JPG')
output = image.copy()
img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Tìm tròn
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1.3, 100)
# Nếu tìm thấy tròn
if circles is not None:
# Lấy (x, y, r) dạng int
circles = np.round(circles[0, :]).astype("int")
print(circles)
# Vẽ các tròn
for (x, y, r) in circles:
cv2.circle(output, (x, y), r, (0, 255, 0), 2)
# Hiển thị
cv2.imshow("circle", output)
cv2.waitKey(0)
Kết quả
[[93 98 84]]
Và nhận được hình ảnh output hiển thị tròn được phát hiện.
