Как считать штрих-код с помощью веб-камеры в django?
Я делаю проект, в котором пытаюсь открыть веб-камеру в django как устройство для чтения кодов. Я следовал этому руководству: "https://www.youtube.com/watch?v=xz9MvyKGYio&list=WL&index=24&t=12s", где описано, как открыть камеру в django. Я бы хотел, чтобы веб-камера считывала штрих-код и перенаправляла этот код в другую функцию. Но я не знаю, как сломать веб-камеру и перенаправить, когда код существует. Итак, это мой views.py:
from django.shortcuts import render
import cv2
import threading
from django.http import StreamingHttpResponse, HttpResponse
from django.views.decorators import gzip
from pyzbar.pyzbar import decode
import time
from django.shortcuts import redirect
def index(request):
return render(request, 'webcam/home.html')
# Create your views here.
@gzip.gzip_page
def home(request):
#https://www.youtube.com/watch?v=xz9MvyKGYio&list=WL&index=23&t=12s
try:
cam = VideoCamera()
return StreamingHttpResponse(gen(cam), content_type="multipart/x-mixed-replace;boundary=frame")
except:
pass
return render(request, 'app1.html')
def helloView(request, code):
http = f"Hello {code}"
return HttpResponse(http)
#to capture video class
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)
################################
# capture code /simple example /
n_1 = '9788366384088'
for code in decode(image):
n = str(code.data.decode('utf-8'))
if n_1 == n:
print(n)
time.sleep(5)
# how to redirect to helloView?
###########################
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')
В VideoCamera.get_frame я добавил простой пример, где я пытаюсь захватить код n_1, но я не могу перенаправить этот код в helloView. Короче говоря: Я открываю браузер, где находится живая веб-камера -> Я сканирую ean код -> Если ean код правильный, перенаправляю на helloView(). Возможно ли это сделать? И где я должен захватить ean код ?
Вы не можете запустить код python во фронтенде. Вам нужно использовать Javascript для загрузки камеры и передачи изображения в бэкенд. Затем вы можете использовать openCV для извлечения кода.
Прочитайте о webrtc (https://webrtc.org/) для доступа к камере во фронтенде.