Как исправить ошибку: (-215: Assertion failed) npoints › 0 в функции 'drawContours'

Ошибка рисования контуров. Я пытаюсь нарисовать контур объектов на изображении.

(_, contours) = cv2.findContours(binary, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

# draw contours over original image
length = len(contours)
for c in range(length):
    cv2.drawContours(img,contours,c,(255,0,0),3)

cv2.namedWindow("output", cv2.WINDOW_NORMAL)
cv2.imshow("output", img)
cv2.waitKey(0)

Я ожидаю, что все контуры будут нарисованы, но фактический результат, который я получаю, - это ошибка:

(-215: утверждение не выполнено) npoints > 0 в функции 'drawContours'


person Glen Thomas    schedule 15.04.2019    source источник
comment
Есть ли шанс поделиться полным кодом, чтобы иметь рабочий пример? Опубликуйте версии программного обеспечения, а также ваше входное изображение и выходное изображение (если возможно, ошибочную версию) и исходную трассировку. Питон?   -  person ZF007    schedule 15.04.2019


Ответы (2)


Контуры должны быть пустым массивом. Измените свой код на:

for c in contours:
    cv2.drawContours(img,[c], 0, (255,0,0),3)
person Den    schedule 17.10.2019

У вас есть контуры, иерархия наоборот. См. документы OpenCv на странице findContours().

contours, hierarchy = cv2.findContours(binary,2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
person matthew altenburg    schedule 28.10.2020