2017-02-09 13 views
0

現在、画像の輪郭を見つけるためにOpenCVウェブサイトのサンプルコードを読んでいます。私がすべき..チュートリアルによればしきい値付き画像から輪郭を見つける

thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY) 

私は、第1の画像を読み取り、グレースケールに変換する:私は、しきい値を適用することによって、バイナリに画像を変換

img = cv2.imread('/.../.../four.png') 
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

その後、閾値処理画像にfindContours()を呼び出すことができる:

contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

このコードを実行しようとすると、何らかの理由で何らかの理由でエラーが発生します。

contours = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) TypeError: image is not a numerical tuple

わからない理由は?

ここでは簡単に読みやすくするための完全なコードは次のとおりです。

img = cv2.imread('/Users/samtozer/Desktop/four.png') 
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY) 
contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

cv2.drawContours(img, contours, -1, (0,255,0), 3) 

誰もが前にこの問題を経験している場合は疑問に思いますか?そしてもしそうなら、何が間違っているのxDに事前

+0

使用この: '輪郭、_ = cv2.findContours(THRESH、cv2.RETR_TREE、cv2.CHAIN_APPROX_SIMPLE) ' –

+0

ちょうどそれを試みましたが、まだ同じエラーが発生しました –

+0

'輪郭を印刷できますか? –

答えて

1

おかげで起こっているコメントで述べたように、あなたがのために見ている二つの問題があります。

cv2.findContours()

の戻り値の型は、

cv2.findContours()には2つの戻り値があります。

  • iに存在する輪郭

    • 戻り値:cv2.threshold()における2つの戻り値がありますcv2.threshold()

    戻り値の型これらの輪郭の

  • 階層をMAGE。
  • 閾値画像を(それは、ピクセル値を分類するために使用される閾値のfloat値を返す)
+2

' findContours'に関する情報はOpenCV 2.4.xで有効です。 OpenCV 3.xでは、3つの値を返します(http://docs.opencv.org/3.2.0/d4/d73/tutorial_py_contours_begin.html)。 –

+0

@DanMašekはそれを言及してくれてありがとう:D –

関連する問題