Камера RTSP падает после 5 секунд обнаружения лица? - PullRequest
0 голосов
/ 10 октября 2019

У меня проблема с этим кодом. Когда я запускаю этот код в ноутбуке jupyter, он запускается и вылетает после 10 секунд обнаружения лица и глаз через камеру RTSP. Я пытаюсь выяснить проблему, но не везет. Кто-нибудь может мне помочь исправить это?

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('C:\\opencv\\build\\etc\\haarcascades\\haarcascade_eye.xml')

cap = cv2.VideoCapture('rtsp url')
while (cap.isOpened()):
    ret, frame = cap.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    face = face_cascade.detectMultiScale(gray, 1.3, 5)

    for(x,y,w,h) in faces:
        cv2.rectangle(gray, (x,y), (x+w,y+h), (127,0,255), 2)
        rol_gray = gray[y:y+h, x:x+w]
        roi_color = frame[y:y+h, x:x+w]

        eyes = eye_cascade.detectMultiScale(roi_gray)
        for (ex,ey,ew,eh) in eyes:
            cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0), 2)

        cv2.imshow('Face Detection', frame)

    k = cv2.waitKey(30) & 0xff ==ord('q')
    if k == 27:
        break
cap.release()
cv2.waitKey(1)
cv2.destroyAllWindows()


This is what i get after crashing 

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
<ipython-input-7-dc3a85ff092b> in <module>
     16 while (cap.isOpened()):
     17     ret, frame = cap.read()
---> 18     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
     19     face = face_cascade.detectMultiScale(gray, 1.3, 5)
     20 

error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

1 Ответ

0 голосов
/ 10 октября 2019

Кажется, что ваша камера не может захватить кадр (возможно, проблема с сетью), и это является причиной сбоя. Добавьте проверку, если кадр был получен успешно:

while (cap.isOpened()):
    ret, frame = cap.read()
    if ret == False:
        print("error")
    else:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        #rest of your code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...