BitNeBolt
@BitNeBolt

Как исправить ошибку при аппроксимации контуров OpenCV?

На изображении необходимо найти прямоугольники. После того, как контуры закрыты я пробую каждый из них аппроксимировать, но вылетает ошибка. Как исправить и в чем проблема?

#Отрывок кода
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))
closed = cv2.morphologyEx(canny, cv2.MORPH_CLOSE, kernel)

cnts = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for c in cnts:
    peri = cv2.arcLength(c, True)
    approx = cv2.approxPolyDP(c, 0.02 * peri, True)

#Вот ошибка
    peri = cv2.arcLength(c, True)
cv2.error: OpenCV(3.4.4) C:\projects\opencv-python\opencv\modules\imgproc\src\shapedescr.cpp:237: error: (-215:Assertion failed) count >= 0 && (depth == CV_32F || depth == CV_32S) in function 'cv::arcLength'
  • Вопрос задан
  • 1560 просмотров
Решения вопроса 1
BitNeBolt
@BitNeBolt Автор вопроса
Нужно использовать не
cnts = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

А вот эту строку для определения массива с координатами контуров
_, cont, hier = cv2.findContours(closed.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
LazyTalent
@LazyTalent
Data Engineer, Freelancer
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы