2017-01-03 2 views
0

파이썬 OpenCV를 사용하여 이미지에 윤곽을 그려했습니다. 내 코드는 다음과 같습니다.Python이 윤곽선 찾기를위한 OpenCV 어설 션 오류를 표시했습니다.

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

Q & A 사이트입니다. 미리 감사드립니다는 불필요하지만 질문은 포함되지 않습니다. 편집 할 때 텍스트 위의 아이콘'{}'이 있습니다. 그것은 당신이 읽을 수있는 방식으로 코드를 형식화 할 수 있도록 게시 할 때 사용하십시오. – Anthon

+0

무엇이 잘못되었는지 정확하게 알기가 어렵습니다. 그러나 그 오류는 주장이 'size.width> 0 && size.height> 0'이라는 주장 오류입니다. 따라서 이미지를 "표시"하려면 너비와 높이가 0보다 큰 이미지가 필요합니다. 이것은 opencv가 train.jpg을 읽을 수 없거나 다른 문자 중 하나를 올바르게 사용하지 않아 발생한 결과 일 수 있습니다. – hetepeperfan

답변

1

문제는 cv2.drawContours (그리고 일반적으로 파이썬의 모든 opencv "drawing"함수)의 출력은 None과 같아야한다는 점입니다. 다음과 같이 시도하십시오.

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

답변 해 주셔서 감사합니다. 작동 중입니다. – Favas

+0

@Favas 환영합니다. 대답을 수락하는 것을 고려하십시오. – marcoresk