面積計算の処理では
contours,hierarchy = cv2.findContours(thresh, 1, 2)
の関数でしか対応してないのでしょうか。
回答としてはNoです。
Noな理由はcontourAreaは4点の座標を渡せば計算してくれます。
Python
1import numpy as np
2import cv2
3l = np.array([(0, 0),(10, 0),(10, 10),(5, 4)])
4area = cv2.contourArea(l)
5print(area)
動作確認してませんが
Python
1edges = cv2.Canny(gauss,100,150)
2_, contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1)
3for c in contours:
4 area = cv2.contourArea(c)
5 if area < 100 or 150 < area:
6 continue
7 cv2.drawContours(edges, c, -1, (0, 0, 255), cv2.CHAIN_APPROX_TC89_L1)
◇参考情報
opencvで画像の切り抜き
これが限界なのでしょうか。
全体像があまり見えてませんが、思いつくのが3点ほど。
a, cv2.adaptiveThreshold
のパラメータを微調整する。
th1 = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2)
パラメータがBlockSizeが11,cが2ですが、BlockSize:25,c:10ならこのようになります。
※ガウシアンフィルタ処理適用前
25,10
11,2
◇参考情報
AdaptiveThresholdSimulator
b, cv2.inRange
とcv2.bitwise_and
を使って白線以外の色をマスキングする。
c, findContoursのオプションを調整する。
◇参考情報
【OpenCV; Python】findcontours関数のまとめ
あと質問文のソースコード部分はcodeタグで囲ってくださいな。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/12 14:48
2018/07/16 15:06
2018/07/17 07:41