1

私は輪郭を検出して描画するには、次のコードを書いた:OpenCVを使ってPythonで輪郭線を検出し描画する方法は?

img = cv2.imread('test2.tif'); 

if not img is None: 
    imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY); 
    ret,thresh = cv2.threshold(imgray,127,255,0); 
    contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); 

    #draw a three pixel wide outline 
    cv2.drawContours(img,contours,-1,(0,255,0),3); 

そして、ここでは、私が受信したエラーは次のとおりです。間違っている

Traceback (most recent call last): File "C:/Users/R.K.singh/Desktop/Image processing/intro-to-contours.py", line 10, in contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); ValueError: too many values to unpack

何?私はPython 2.7とOpenCV 3.1.0を使用しています

答えて

2

Selchukのポイントを強調するために、OpenCV 3.xに関する構文が少し変更されました。 cv2.findContoursになると、戻り値が異なります。次のように返します。image, contours, hierarchy

OpenCVの以前のバージョンは、ただし、contours, hierarchyだけを返します。彼らはイメージを返さない。

2

次の行を変更してください。 OpenCV 3.1.0を使用していますが、OpenCV 2.7.xを使用してコーディングしています。

(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_TREE, 
     cv2.CHAIN_APPROX_SIMPLE) 

linkもお手伝いします。

+0

what's edged?私のコードでは定義されていません。 @selçuk-İlhan-aydi – singhuist

+1

コードを編集しました –

関連する問題