2017-01-03 6 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 (и вообще все функции рисования «opencv» в python) имеют выход равный None. Попробуйте так:

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

Спасибо за ваш ответ. Работает – Favas

+0

@Favas. Добро пожаловать. Пожалуйста, примите к сведению ответ. – marcoresk