def webcam_feed(): cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() image = cv2.resize(frame, (640, 480)) _, buffer = cv2.imencode('.jpg', image) frame = buffer.tobytes() yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n') cap.release() def webcam_view(request): return StreamingHttpResponse(webcam_feed(), content_type="multipart/x-mixed-replace;boundary=frame") 转化为灰度图片并在网页显示
时间: 2023-06-10 08:03:35 浏览: 78
好的,您的问题是如何将该函数转化为灰度图片并在网页上显示。
首先,我们需要在函数中对每一帧图片进行灰度化处理。可以使用OpenCV中的cvtColor函数,并将转化后的图像赋值给变量gray。
接下来,我们需要将灰度图像在网页上显示。可以使用Django的HttpResponse对象,并将图像编码为base64格式,然后在HTML页面上使用data URI scheme来展示图像。代码示例:
```
import cv2
import base64
from django.http import HttpResponse
def webcam_feed():
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转换为灰度图像
_, buffer = cv2.imencode('.jpg', gray)
frame = buffer.tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n'
frame
b'\r\n')
cap.release()
def webcam_view(request):
return HttpResponse(
"""
<html>
<head><title>Webcam</title></head>
<body>
<img id="webcam" src="" width="640" height="480">
<script>
var webcam = document.getElementById("webcam");
var source = new EventSource("{% url 'webcam_feed' %}");
source.onmessage = function(event) {
webcam.src = "data:image/jpg;base64," + event.data;
};
</script>
</body>
</html>
""",
content_type="text/html"
)
```
在这个示例中,我们使用了JavaScript中的EventSource来持续接收服务器端推送的图像数据,并在接收到数据时更新图片的src属性。需要注意的是,这里的URL应该对应到webcam_feed视图函数的URL路由,即{% url 'webcam_feed' %}。
阅读全文