Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm và vẽ hình tròn trong ảnh dùng OpenCV Python


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.

Tìm và vẽ hình tròn trong ảnh dùng OpenCV Python

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.

Tìm và vẽ hình tròn trong ảnh dùng OpenCV Python