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

Phát hiện đường viền (contours) trong ảnh bằng OpenCV


Trong chương trình này, chúng ta sẽ phát hiện đường viền (contours) trong ảnh. Contours có thể hiểu đơn giản là đường cong nối tất cả các điểm liên tiếp có cùng màu hoặc cường độ. Contours là công cụ hữu ích cho phân tích hình dạng, phát hiện và nhận diện đối tượng.

Ảnh gốcPhát hiện đường viền (contours) trong ảnh bằng OpenCV

Thuật toán

Bước 1: Import OpenCV.
Bước 2: Import matplotlib.
Bước 3: Đọc ảnh.
Bước 4: Chuyển ảnh từ BGR sang RGB.
Bước 5: Chuyển ảnh RGB sang grayscale.
Bước 6: Thực hiện ngưỡng (thresholding) trên ảnh.
Bước 7: Tìm contours trên ảnh.
Bước 8: Vẽ contours lên ảnh.
Bước 9: Hiển thị kết quả.

Mã ví dụ

import cv2
import matplotlib.pyplot as plt
image = cv2.imread('testimage.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV)
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
image = cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
plt.imshow(image)
plt.show()

Kết quả

Phát hiện đường viền (contours) trong ảnh bằng OpenCV