Python код ошибки "имя 'screenCnt' не определено" - PullRequest
0 голосов
/ 03 февраля 2020

Я новичок в python, и я создал среду anaconda и запускаю данный код, но он показывает ошибку

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

        # our approximated contour should have four points
        if len(approx) == 4:
            screenCnt = approx
            break

# show the contour (outline) of the piece of paper
#print("STEP 2: Find contours of paper")
    cv2.drawContours(orig, [screenCnt], -1, (0, 255, 0), 2)

#     apply the four point transform to obtain a top-down
#     view of the original image
    warped = four_point_transform(orig, screenCnt.reshape(4, 2) * ratio)

Ошибка

NameError Traceback (последний вызов последнего ) в 122 # показать контур (контур) листа бумаги 123 #print («ШАГ 2: Найти контуры бумаги») -> 124 cv2.drawContours (orig, [screenCnt], -1, (0, 255 , 0), 2) 125 126 # применить четырехточечное преобразование для получения нисходящего

NameError: имя 'screenCnt' не определено

, но в коде, который я уже определил screenCnt. Первоначально этот код работал правильно, но теперь он не работает или показывает ошибку после каждого альтернативного выполнения. (он запускается правильно в первый раз и при перезапуске ядра выдает ту же ошибку).

или если я установил screenCnt = 0 или screenCnt = None, это дает ошибку

error Traceback (самая последняя последний вызов) в 123 # показать контур (контур) листа бумаги 124 #print («ШАГ 2: Найти контуры бумаги») -> 125 cv2.drawContours (orig, [screenCnt], -1, (0 , 255, 0), 2) 126 127 # применить четырехточечное преобразование для получения нисходящей

ошибки: OpenCV (4.2.0) C: \ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ drawing. cpp: 2509: ошибка: (-215: утверждение не выполнено) npoints> 0 в функции 'cv :: drawContours'

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Похоже, переменные screenCnt в строках 81 и 83 не совпадают. Или вы пытаетесь получить доступ к screenCnt, который определен локально в рамках оператора if.

0 голосов
/ 03 февраля 2020

глядя на ваш код, вероятно, оператор screenCnt = approx никогда не срабатывает во время выполнения. Попробуйте инициализировать screenCnt некоторым значением по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...