Задача - распознать лица в видеопотоке, нарисовать ограничительные рамки на видеокадрах и показать имя человека.Необходимо для потоковой передачи видеокадров и метаданных (имен) из API.API обращается к подпрограмме машинного обучения с интенсивным использованием графических процессоров, которая может быть использована для возврата пары фреймов и имен в кортеже Python.Для сокращения вычислений мы попытались выполнить один вызов функции на кадр.кортеж содержит фрейм байтового типа и имя строкового типа.
Как показать потоковые видеокадры и метаданные (имена) из API?
def get_frame():
recog = VideoFaceRecog(target="/video/m.mp4")
while True:
(ret, frame) = recog.cap.read()
if not ret:
print('end of the video file...')
break
cv2.resize(frame, (640, 480))
frame, names, bounding_boxes = recog.frame_recog(frame)
camera_frame = cv2.imencode('.jpg', frame)[1].tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + camera_frame + b'\r\n')
@app.route('/camera_feed', methods=['GET'])
def video_feed():
return Response(stream_with_context((get_frame())),
mimetype='multipart/x-mixed-replace; boundary=frame')