![見出し画像](https://assets.st-note.com/production/uploads/images/69562950/rectangle_large_type_2_c8c42e304a852af287ed4781c90c00fe.png?width=1200)
Python で画像の輪郭検出!
PythonでOpenCVを使用して画像の輪郭を検出してその数をカウントしてみます。単純なマルを描いた画像を使ってColabでやっていきます。
実際の画像です。これを使って画像解析をやってみます。Colabに事前に画像をアップロードする必要があります。
![](https://assets.st-note.com/img/1641737156346-lPz9r23fYZ.jpg?width=1200)
コードを書いていきます。
import cv2
import matplotlib.pyplot as plt
ライブラリを読み込み
image = cv2.imread("test.jpg")
二値画像作成
_, binary = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)
続いて輪郭検出ですが、まず輪郭を検出。
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
そして輪郭に色をつけます。
image = cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
最後に画像を眼に見えるように表示してみると
plt.imshow(image)
plt.show()
![](https://assets.st-note.com/img/1641737446806-96UQq8RNzy.png)
これで輪郭が色によって分けられています。輪郭の抽出ができました。
そしてそこに表示されている輪郭が検出されているマルの数はというと、
contours
で輪郭が個別に管理されているのでその長さ、値の数をlen()で取得すると簡単にわかります。
image = cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
print(len(contours))
この場合は"3"と出てきています。画像を見ても、"3"個が確認できます。