【发布时间】:2016-04-15 19:19:45
【问题描述】:
我在 Python 中编写了一些代码,它利用OpenCV(以及其他包)逐帧遍历选定的视频,检查该帧是否有人(见here),然后返回所有找到一个人的框架。
目标(目前)是在网络浏览器中动态显示这些图像。我用这个答案作为指导:How to stream an HttpResponse with Django
我的代码如下:
def stream_response(request):
return StreamingHttpResponse(detect())
def detect():
frame_count=0
while(frame_count < num_frames):
ret, frame = capture.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
image_pil=Image.fromarray(gray)
response = HttpResponse(content_type="image/jpeg")
image_pil.save(response, "JPEG")
yield response
yield ""*1024
time.sleep(1)
frame_count+=1
但是,当我使用 Django 中的 StreamingHTTPResponse 功能产生响应(实现generator 的方法)时,我在浏览器中看到的响应是乱码(见下图)。
但是,当我使用 HTTPResponse 返回响应时,当定向到相应的端口时,图像在浏览器中显示良好。
我尝试了各种测试,但仍然无法弄清楚。我的理论是这可能是由于浏览器无法在给定时间内渲染图像,但我不确定......
更新:最终直接从 Python 生成 HTML 用于原型应用程序。这对当前的目的起到了作用,但会重新探索这一点。
【问题讨论】:
-
只能返回一张图片/请求让浏览器正确显示。