2017-01-03 103 views
0

我試圖使用Python OpenCV在圖像中繪製輪廓。我的代碼如下:顯示OpenCV Assertion錯誤以查找輪廓的Python

import numpy as np 
import cv2 
import Image 
a = cv2.imread('train.jpg') 
b = cv2.cvtColor(a, cv2.COLOR_BGR2GRAY) 
ret, c = cv2.threshold(b, 127, 255, cv2.THRESH_BINARY) 
contours, h = cv2.findContours(c, 1, 2) 
d = cv2.drawContours(a, contours, -1, (128, 255, 0), 1) 
cv2.imshow('abs', d) 
cv2.waitKey(0) 

編譯此代碼時出現錯誤。錯誤如下:

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/travis/miniconda/conda-bld/work/opencv-2.4.11/modules/highgui/src/window.cpp, line 261 
Traceback (most recent call last): 
    File "shape.py", line 9, in <module> 
    cv2.imshow('abs',d) 
cv2.error: /home/travis/miniconda/conda-bld/work/opencv-2.4.11/modules/highgui/src/window.cpp:261: error: (-215) size.width>0 && size.height>0 in function imshow 

如何避免此錯誤?

+0

這是一個問答網站。提前致謝是多餘的,但包括一個問題不是。編輯時在文本上方有一個圖標「{}」。它允許您以可讀的方式格式化代碼,請在發佈時使用它。 – Anthon

+0

好吧,我很難看到究竟是什麼問題。但是這個錯誤是斷言錯誤,斷言是'size.width> 0 && size.height> 0'。因此,爲了「imshow」圖像,您需要一個寬度和高度都大於0的圖像。這可能是opencv無法讀取train.jpg的結果,或者您沒有正確使用其他字符。 – hetepeperfan

回答

1

問題應該是cv2.drawContours(以及python中的所有opencv「繪圖」函數)的輸出都等於None。試試這個方法:

cv2.drawContours(a, contours, -1, (128, 255, 0), 1) 
cv2.imshow('abs', a) 
cv2.waitKey(0) 
+0

謝謝你的回答..它正在工作 – Favas

+0

@Favas歡迎您。請考慮接受答案。 – marcoresk