如何使用 django 框架实时流式传输 opencv 框架?
How to stream opencv frame with django frame in realtime?
我正在尝试使用 raspberry pi 从 USB 摄像头捕获图像并使用 Django 框架进行流式传输
我尝试使用 StreamingHttpResponse 从 Opencv2 流式传输帧。
但是,它只显示 1 帧,并没有替换图像。
如何实时更换图片?
这是我的代码。
from django.shortcuts import render
from django.http import HttpResponse,StreamingHttpResponse
import cv2
import time
class VideoCamera(object):
def __init__(self):
self.video = cv2.VideoCapture(0)
def __del__(self):
self.video.release()
def get_frame(self):
ret,image = self.video.read()
ret,jpeg = cv2.imencode('.jpg',image)
return jpeg.tobytes()
def gen(camera):
while True:
frame = camera.get_frame()
yield(frame)
time.sleep(1)
def index(request):
# response = HttpResponse(gen(VideoCamera())
return StreamingHttpResponse(gen(VideoCamera()),content_type="image/jpeg")
@Ritwick 我所做的是将 gen 和 index 函数更改为以下
def gen(camera):
while True:
frame = camera.get_frame()
yield(b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
@gzip.gzip_page
def index(request):
try:
return StreamingHttpResponse(gen(VideoCamera()),content_type="multipart/x-mixed-replace;boundary=frame")
except HttpResponseServerError as e:
print("aborted")
我使用 python 生成器生成每个相机帧并使用 StreamingHttpResponse 替换边界标记为 [=20= 的 multipart/x-mixed-replace ]帧
django 中有一个 gzip 装饰器函数。
from django.views.decorators import gzip</pre>
提高流式传输速度。我使用了 django gzip 装饰器方法来 gzip 框架。
我正在尝试使用 raspberry pi 从 USB 摄像头捕获图像并使用 Django 框架进行流式传输 我尝试使用 StreamingHttpResponse 从 Opencv2 流式传输帧。 但是,它只显示 1 帧,并没有替换图像。
如何实时更换图片?
这是我的代码。
from django.shortcuts import render
from django.http import HttpResponse,StreamingHttpResponse
import cv2
import time
class VideoCamera(object):
def __init__(self):
self.video = cv2.VideoCapture(0)
def __del__(self):
self.video.release()
def get_frame(self):
ret,image = self.video.read()
ret,jpeg = cv2.imencode('.jpg',image)
return jpeg.tobytes()
def gen(camera):
while True:
frame = camera.get_frame()
yield(frame)
time.sleep(1)
def index(request):
# response = HttpResponse(gen(VideoCamera())
return StreamingHttpResponse(gen(VideoCamera()),content_type="image/jpeg")
@Ritwick 我所做的是将 gen 和 index 函数更改为以下
def gen(camera):
while True:
frame = camera.get_frame()
yield(b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
@gzip.gzip_page
def index(request):
try:
return StreamingHttpResponse(gen(VideoCamera()),content_type="multipart/x-mixed-replace;boundary=frame")
except HttpResponseServerError as e:
print("aborted")
我使用 python 生成器生成每个相机帧并使用 StreamingHttpResponse 替换边界标记为 [=20= 的 multipart/x-mixed-replace ]帧
django 中有一个 gzip 装饰器函数。
from django.views.decorators import gzip</pre>
提高流式传输速度。我使用了 django gzip 装饰器方法来 gzip 框架。