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

Làm thế nào để tìm đường viền của một hình ảnh bằng cách sử dụng scikit-learning trong Python?

Scikit-learning, thường được gọi là sklearn là một thư viện bằng Python được sử dụng cho mục đích triển khai các thuật toán học máy. Nó là một thư viện mã nguồn mở do đó nó có thể được sử dụng miễn phí. Thư viện này được xây dựng dựa trên các thư viện Numpy, SciPy và Matplotlib.

Phương pháp 'diễu hành hình vuông' được sử dụng để tìm các đường bao trong một hình ảnh. Hàm ‘find_contours’ hiện diện trong lớp ‘Measure’ của thư viện ‘skimage’ được sử dụng. Trong trường hợp này, các giá trị có trong mảng được nội suy theo cách tuyến tính.

Bằng cách này, độ chính xác của các đường viền trong hình ảnh đầu ra sẽ tốt hơn nhiều. Nếu các đường viền trong hình ảnh giao nhau, các đường viền đó mở, nếu không chúng sẽ bị đóng lại.

Hãy để chúng tôi hiểu cách tìm đường viền trong hình ảnh bằng thư viện scikit-learning -

Ví dụ

import numpy as np
import matplotlib.pyplot as plt
from skimage import measure
x, y = np.ogrid[-6.7:np.pi:215j, -1.2:np.pi:215j]
r = np.sin(np.exp((np.sin(x)**3 + np.cos(y)**2)))
contours = measure.find_contours(r, 0.8)
fig, ax = plt.subplots()
ax.imshow(r, cmap=plt.cm.gray)
for contour in contours:
ax.plot(contour[:, 1], contour[:, 0], linewidth=2)
ax.axis('Image')
ax.set_xticks([])
ax.set_yticks([])
plt.show()

Đầu ra

Làm thế nào để tìm đường viền của một hình ảnh bằng cách sử dụng scikit-learning trong Python?

Giải thích

  • Các gói bắt buộc được nhập vào môi trường.

  • Dữ liệu được tạo với sự trợ giúp của gói NumPy.

  • Hàm ‘find_contours’ được sử dụng để xác định các đường viền của hình ảnh.

  • Hàm 'subplot' được sử dụng để hiển thị hình ảnh gốc và hình ảnh có đường viền trên bảng điều khiển.