Computer >> Máy Tính >  >> Lập trình >> Python

Tìm và vẽ đường viền bằng OpenCV trong Python

Với mục đích phân tích hình ảnh, chúng tôi sử dụng thư viện python Opencv (Open Source Computer Vision Library). Tên thư viện phải được nhập sau khi cài đặt opencv là cv2.

Trong ví dụ dưới đây, chúng tôi tìm thấy các đường bao có trong tệp hình ảnh. Các đường bao giúp chúng ta xác định các hình dạng có trong một hình ảnh. Đường bao được định nghĩa là đường nối tất cả các điểm dọc theo đường biên của hình ảnh có cùng cường độ. Hàm findContours trong OPenCV giúp chúng ta xác định các đường bao. Tương tự, hàm drawContours giúp chúng ta vẽ các đường bao. Dưới đây là cú pháp của cả hai.

Cú pháp

cv.FindContours(image, mode=CV_RETR_LIST, method=CV_CHAIN_APPROX_SIMPLE)
Where
image is the name of the image
Mode is Contour retrieval mode
Method is Contour approximation method

cv.DrawContours(img, contours, contourIdx, colour, thickness)
Where
image is the name of the image
contours – All the input contours.
contourIdx – Parameter indicating a contour to draw. If it is negative, all the contours are drawn.
color – Color of the contours
thickness is how thick are the lines drawing the contour

Ví dụ

Trong ví dụ dưới đây, chúng tôi sử dụng hình ảnh bên dưới làm hình ảnh đầu vào của chúng tôi. Sau đó, chạy chương trình dưới đây để lấy các đường bao quanh nó.

Tìm và vẽ đường viền bằng OpenCV trong Python

Chúng ta có thể tìm thấy ba hình dạng trong sơ đồ trên. Chúng ta có thể vẽ các đường bao quanh tất cả hoặc một số chúng bằng chương trình bên dưới.

Ví dụ

import cv2
# Load an image
image = cv2.imread(“path to image file”)
# Changing the colour-space
LUV = cv2.cvtColor(image, cv2.COLOR_BGR2LUV)
# Find edges
edges = cv2.Canny(LUV, 10, 100)
# Find Contours
contours, hierarchy = cv2.findContours(edges,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# Find Number of contours
print("Number of Contours is: " + str(len(contours)))
# Draw yellow border around two contours
cv2.drawContours(image, contours, 0, (0, 230, 255), 6)
cv2.drawContours(image, contours, 2, (0, 230, 255), 6)
# Show the image with contours
cv2.imshow('Contours', image)
cv2.waitKey(0)

Chạy đoạn mã trên cho chúng ta kết quả sau -

Đầu ra

Number of Contours found = 3

Và chúng tôi nhận được sơ đồ dưới đây hiển thị đầu ra.

Tìm và vẽ đường viền bằng OpenCV trong Python