#python #cv2
Вопрос:
Я пробовал код на colab, и это часть моего кода
while True:
ret, frame = cap.read()
if ret:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
cls_idx = int(frames_label[frames_label['frame'] == i]['label'])
if annot:
bb = np.array(annot.iloc[i-1, 2:].astype(int))
else:
bb = detector.detect(frame)[0, :4].numpy().astype(int)
bb[:2] = np.maximum(0, bb[:2] - 5)
bb[2:] = np.minimum(frame_size, bb[2:] 5) if bb[2:].any() != 0 else bb[2:]
Я также использую imshow() для отображения изображения на моем экране(его нет в приведенном выше коде из-за длины кода), сначала изображения могут отображаться правильно, но он остановится на определенном изображении и поднимет
Type error: 'NoneType' object is not subscriptable at
bb = detector.detect(frame)[0, :4].numpy().astype(int)
p.s. bb-это аббревиатура ограничивающего прямоугольника
Изображение Ошибки:
кто-нибудь может помочь, пожалуйста? Спасибо
Комментарии:
1. Из вашего кода кажется, что вы получаете кадры с веб-камеры, возможно, что либо само
frame
изображение не записывается веб-камерой, либоdetector.detect()
выводитсяNone
. Возможно, вам захочется проверить и то, и другое. Не могли бы вы связать код дляdetector
?2. Код слишком длинный, чтобы добавлять комментарии, это ссылка на код, который я использую github.com/GajuuzZ/Human-Falling-Detect-Tracks/blob/master/…
3. Я не мог понять всего, что делает код, но, похоже, вы не имеете дела с возможностью
detect
бытьNone
в коде. Вы обрабатываетеdetect
, если это неNone
так, но если это так, оно возвращается в любом случае. Одним из решений было бы окружитьbb = detector.detect(frame)[0, :4].numpy().astype(int)
попытку, за исключением иcontinue
до следующего цикла, если он ошибается4. когда я использую печать(кадр), выводятся числа, но когда я использую detector.detect(), он не выводит ни одного.
5. да, тогда это потому, что вы
detect
возвращаетесьNone
, потому что вы не справились с этим в своем коде
Ответ №1:
Я не могу полностью проверить это, но внесите эти изменения и дайте мне знать, работает ли это:
try:
bb = detector.detect(frame)[0, :4].numpy().astype(int)
except Exception as e:
print("An error occurred:", e)
continue