サイコロ画像のドットを数える
輪郭が見つかったので、そこから情報を取り出していきます。
前の演習では、紫色のサイコロ画像から輪郭を検出できるよう前処理しました。

今回は、画像内のドットの数を数えて、サイコロの出目を判定します。
前の演習で検出した輪郭は contours として読み込まれています。
すべての輪郭の形状をリストにした shape_contours を作成してください。作成後にコンソールで shape_contours を表示すると、各輪郭の形状を確認できます。
ほとんどの輪郭がサイズ 50 を超えないことを確認してください。これらを数えると、画像内のドットの数と一致します。
show_image_contour(image, contours) は、Matplotlib を使って検出したすべての輪郭付き画像を表示する、あらかじめ用意された関数です。
この演習はコースの一部です
Pythonで学ぶ画像処理
演習の手順
shape_contoursを、contoursのすべての輪郭の形状からなるリストにします。max_dots_shapeを 50 に設定します。- 輪郭の形状に対する条件として、ドットの最大形状サイズ
max_dots_shapeを用います。 - サイコロの出目を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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(____)))