25👍
The solution for the above problem was something like this :
views.py
from django.views.decorators import gzip
from django.http import StreamingHttpResponse
import cv2
import threading
class VideoCamera(object):
def __init__(self):
self.video = cv2.VideoCapture(0)
(self.grabbed, self.frame) = self.video.read()
threading.Thread(target=self.update, args=()).start()
def __del__(self):
self.video.release()
def get_frame(self):
image = self.frame
_, jpeg = cv2.imencode('.jpg', image)
return jpeg.tobytes()
def update(self):
while True:
(self.grabbed, self.frame) = self.video.read()
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 livefe(request):
try:
cam = VideoCamera()
return StreamingHttpResponse(gen(cam), content_type="multipart/x-mixed-replace;boundary=frame")
except: # This is bad! replace it with proper handling
pass
And then in urls.py map this to a url.
1👍
I modified the code by Aniket Maithani to display it in certain img source.
camera.py
class VideoCamera(object):
def __init__(self):
self.video = cv2.VideoCapture(0)
(self.grabbed, self.frame) = self.video.read()
threading.Thread(target=self.update, args=()).start()
def __del__(self):
self.video.release()
def get_frame(self):
image = self.frame
_, jpeg = cv2.imencode('.jpg', image)
return jpeg.tobytes()
def update(self):
while True:
(self.grabbed, self.frame) = self.video.read()
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')
views.py
from camera import *
@gzip.gzip_page
def livefe(request):
try:
cam = VideoCamera()
return StreamingHttpResponse(gen(cam), content_type="multipart/x-mixed-replace;boundary=frame")
except: # This is bad!
pass
def index(request, *args, **kwargs):
return render(request, 'index.html')
urls.py
from django.urls import path
from .views import *
urlpatterns = [
path('', index),
# 'livefe' -> function from views
# 'live_camera' -> name at index.html>img src="{% url 'live_camera' %}
path('/camera', livefe, name="live_camera"),
]
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebCamera</title>
</head>
<body>
<div>
<img src="{% url 'live_camera' %}">
</div>
</body>
</html>
- How can I make all CharField in uppercase direct in model?
- Forbidden (403) CSRF verification failed. Request aborted
- Python regex with question mark literal
- Django annotate and count: how to filter the ones to include in count
- 'instancemethod' object has no attribute '__getitem__'
Source:stackexchange.com