python - 在 Flask 中流式传输人脸识别视频和元数据
问题描述
任务是识别视频流中的人脸并在视频帧上绘制边界框并显示人名。需要从 API 流式传输视频帧和元数据(名称)。API 调用 GPU 密集型机器学习子例程,该子例程可以返回 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')
解决方案
识别 = VideoFaceRecog()
def get_frame(recog):
cap = cv2.VideoCapture(0)
while True:
(ret, frame) = cap.read()
if not ret:
print('end of the video file...')
break
frame, names, bounding_boxes = recog.frame_recog(frame)
recog.add_name(names)
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'))
在不同的端点调用元数据。
推荐阅读
- angular - Angular - 类型“desc”不能分配给类型“null”
- javascript - 如何使用javascript将html表单数据保存在txt文件中
- docker - 在主机 Nginx 后面使用多个 dockerized Nginx
- node.js - Flutter socket.io 客户端未通过 https 与 node.js socket.io 服务器连接
- jmeter - JMeter Beanshell - 将文件另存为 pdf
- javascript - 我该怎么做才能从 java 解析 javascript 类?
- c - 为什么我在任务管理器中没有找到要杀死的进程时经常得到“ld返回1退出状态”?
- splunk - Splunk 搜索格式
- php - 如何将标签与 ui-select 链接
- python - Python - AWS Cognito 在用户电子邮件更改时需要验证电子邮件确认