2017-01-03 5 views
0

私はPython 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(そして一般的には、pythonのすべてのopencv "drawing"関数)の出力がNoneに等しいということです。この方法を試してください:

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

あなたの答えをありがとう。それは働いています – Favas

+0

@ファヴァあなたは大歓迎です。答えを受け入れることを検討してください。 – marcoresk

関連する問題