NoneType 'объект не подписывается - PullRequest
0 голосов
/ 16 апреля 2020

Получение ошибки ниже в коде

TypeError: 'NoneType' object is not subscriptable
line : crop_img = img[70:300, 70:300]

Может кто-нибудь, пожалуйста, помогите мне с этим?

спасибо большое

        img_dofh = cv2.imread("D.png",0)
        ret, img = cap.read()
        cv2.rectangle(img,(60,60),(300,300),(255,255,2),4) #outer most rectangle
        crop_img = img[70:300, 70:300]
        crop_img_2 = img[70:300, 70:300]

        grey = cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY)

1 Ответ

0 голосов
/ 16 апреля 2020

Вы не показываете, откуда берется ваша переменная img. Но почему-то это None вместо того, чтобы содержать данные изображения.

Часто это происходит, когда вы пишете функцию, которая должна возвращать действительный объект для img, но вы забываете включить в функцию оператор return, поэтому он автоматически возвращает None.

Проверьте код, который создает img.

ОБНОВЛЕНИЕ

Ответ на ваш код:

Было бы полезно если бы вы могли предоставить минимальный воспроизводимый пример . Это может выглядеть примерно так:

import cv2
cap = cv2.VideoCapture(0)
if cap.isOpened():
    ret, img = cap.read()
if img is None:
    print("img was not returned.")
else:
    crop_img = img[70:300, 70:300]       
    print(crop_img)  # should show an array of image data

Глядя на документацию , кажется, что ваша камера, возможно, не захватила ни одного кадра к моменту достижения этой точки в вашем коде. Документация гласит: «Если ни один кадр не был захвачен (камера была отключена или в видеофайле больше нет кадров), методы возвращают false, а функции возвращают указатель NULL». Могу поспорить, что функция .read() возвращает указатель NULL, который преобразуется в None при отправке обратно в Python.

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

Приведенный выше код прекрасно работает на моем MacBook Pro, но я должен дать терминалу разрешение на использование камеры при первой попытке ее попробовать. Вы пытались перезапустить приложение терминала? Ваша программа имеет доступ к камере?

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