前提・実現したいこと
画像の白線を輪郭として抽出させた後それぞれが何角形であるかを調べたいと思っています。
opencvとpythonを用いて行なっているのですが輪郭がきちんと抽出されません。
発生している問題・エラーメッセージ
画像のように、一部は赤線とはなっていますが内側部分は認識すらされていないように思います。 また、赤線となる場合と青線となる場合の違いが分かりません。
該当のソースコード
python
1gray = cv2.cvtColor(img_draw, cv2.COLOR_BGR2GRAY) 2contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 3import matplotlib.pyplot as plt 4from matplotlib.patches import Polygon 5 6 7def draw_contours(ax, img, contours): 8 ax.imshow(img) # 画像を表示する。 9 ax.set_axis_off() 10 11 for i, cnt in enumerate(contours): 12 # 形状を変更する。(NumPoints, 1, 2) -> (NumPoints, 2) 13 cnt = cnt.squeeze(axis=1) 14 # 輪郭の点同士を結ぶ線を描画する。 15 ax.add_patch(Polygon(cnt, color="b", fill=None, lw=2)) 16 # 輪郭の点を描画する。 17 ax.plot(cnt[:, 0], cnt[:, 1], "ro", mew=0, ms=4) 18 # 輪郭の番号を描画する。 19 ax.text(cnt[0][0], cnt[0][1], i, color="orange", size="20") 20 21 22fig, ax = plt.subplots(figsize=(8, 8)) 23draw_contours(ax, img, contours) 24 25plt.show()
試したこと
一通りネットや文献は確認してみたつもりですが、opencvを用いて輪郭を共有している図形の輪郭を抽出しようとしているものがほとんどなく、良い解決策が見つかっていないのが現状です。
また、cv2.findContoursのmethod部分を変えて行なったりもしましたが良い変化はありませんでした。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/12 05:04
2019/10/12 05:31 編集