に深色に基づいて、接続面積をします。どのセグメントI iはセグメントに8つのブロックに画像を必要ような画像を有し、OpenCVの
Iは
img_gray = cv2.imread(input_file,cv2.IMREAD_GRAYSCALE)
ret,thresh = cv2.threshold(img_gray,254,255,cv2.THRESH_BINARY) =
kernel = np.array(cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3), (-1, -1)))
img_open = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
cv2.imshow('abc',img_open)
ret1,thresh1 = cv2.threshold(img_open,254,255,cv2.THRESH_BINARY_INV) #
contours, hierarchy = cv2.findContours(thresh1, cv2.RETR_CCOMP ,cv2.CHAIN_APPROX_NONE)
for i in range(len(contours)):
if len(contours[i]) > 20:
x, y, w, h = cv2.boundingRect(contours[i])
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
print (x, y),(x+w, y+h)
後の最終結果が互いに接続いくつかのブロックは、私が期待ものではない大部分に形成される。この閾値法を試みました。
周り
私はopenCVに慣れていませんが、バイナリしきい値を実行しているという事実に問題があると感じています。それはそこにあるかどうかです。しかし、あなたが必要とする結果は、行と行の両方の三項です。 'cv2.THRESH_BINARY'を使うのではなく、' cv2.THRESH_TRUNC'を実行してバックグラウンドを省略してから、バイナリ比較を行います。最後に両方の輪郭線を取得し、それらを結合すると、理論上は8つの領域になるはずです。 – Enfyve
場所+深さに基づいて平均的なセグメント化を試みましたか? – Shai
@Shai私は小区切りを調べます – user824624