Đế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ó:

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
Hướng dẫn bài tập
- Tạo
shape_contourslà một list chứa kích thước (shape) của tất cả đường bao trongcontours. - Đặt
max_dots_shapebằ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(____)))