Во время выполнения flask, когда выполнение CV2.VideoCapture (0) остановлено (процесс завершен с кодом выхода 74)? - PullRequest
0 голосов
/ 06 мая 2020

Сделано шагов

  1. Старт Flask Выполнение
  2. Do login route call это перенаправляет меня на Dashboard route
  3. при загрузке Dashboard.html вызывается функция video_feed.

Теперь, если я пытаюсь вызвать любую другую ссылку маршрута (например, History), Flask Выполнение прекращается.

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

<img width="100%" height="350" src="{{ url_for('video_feed') }}">
# app.py
def gen(camera):
    while True:
        #get camera frame
        global global_frame
        frame = camera.get_frame()
        if frame != None:
            global_frame = frame
            yield (b'--frame\r\n'
                    b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
        else:
            yield (b'--frame\r\n'
                            b'Content-Type: image/jpeg\r\n\r\n' + global_frame + b'\r\n\r\n')
# @app.route('/video_feed')
def video_feed():
    return Response(gen(VideoCamera()),
                    mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == "__main__":
    app.run('localhost',5000,debug=True,threaded=True)


# import the necessary packages
import cv2

# defining face detector
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
ds_factor = 0.6


class VideoCamera(object):
    def __init__(self):
        # capturing video
        self.video = cv2.VideoCapture(0)

    def __del__(self):
        # releasing camera
        self.video.release()
        cv2.destroyAllWindows()


    def get_frame(self):
        # extracting frames
        ret, frame = self.video.read()
        while (self.video.isOpened()):
            if ret:
                frame = cv2.resize(frame, None, fx=ds_factor, fy=ds_factor,
                                   interpolation=cv2.INTER_AREA)
                gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
                face_rects = face_cascade.detectMultiScale(gray, 1.3, 5)
                for (x, y, w, h) in face_rects:
                    cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
                    break
                # encode OpenCV raw frame to jpg and displaying it
                ret, jpeg = cv2.imencode('.jpg', frame)
                return jpeg.tobytes()
            else:
                return None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...