Bắt đầu ngayBắt đầu miễn phí

Đếm số chấm trên ảnh xúc xắc

Giờ khi đã tìm được các đường bao (contour), bạn có thể trích xuất thông tin từ đó.

Trong bài trước, bạn đã chuẩn bị một ảnh xúc xắc màu tím để tìm các đường bao của nó:

3 images showing the steps to find contours

Lần này, bạn sẽ xác định con số được gieo trên xúc xắc bằng cách đếm các chấm (dots) trong ảnh.

Các đường bao tìm được ở bài trước đã được nạp sẵn trong biến contours.

Hãy tạo một list chứa kích thước của tất cả các đường bao, đặt tên là shape_contours. Bạn có thể xem tất cả kích thước này bằng cách gọi shape_contours trong console sau khi đã tạo.

Kiểm tra rằng phần lớn các đường bao không có kích thước lớn hơn 50. Nếu bạn đếm chúng, đó chính là số chấm trên ảnh.

show_image_contour(image, contours) là một hàm đã nạp sẵn, hiển thị ảnh cùng tất cả đường bao tìm được bằng Matplotlib.

Bài tập này là một phần của khóa học

Xử lý ảnh bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Tạo shape_contours là một list chứa kích thước (shape) của tất cả đường bao trong contours.
  • Đặt max_dots_shape bằng 50.
  • Thiết lập điều kiện theo kích thước đường bao để lọc các chấm có kích thước tối đa max_dots_shape.
  • In ra số trên xúc xắc.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Create list with the shape of each contour
shape_contours = [cnt.shape[0] for cnt in ____]

# Set 50 as the maximum size of the dots shape
max_dots_shape = ____

# Count dots in contours excluding bigger than dots size
dots_contours = [cnt for cnt in contours if np.shape(cnt)[0] < ____]

# Shows all contours found 
show_image_contour(binary, contours)

# Print the dice's number
print("Dice's dots number: {}. ".format(len(____)))
Chỉnh sửa và Chạy Mã