He desarrollado una aplicación web en Django que tiene un método de visualización que contiene el código OpevCV que, cuando se activa, abre la cámara web del usuario para detectar su cara. Esta aplicación funciona bien en mi servidor local, pero cuando la he alojado en PythonAnywhere dice que la cámara no se encuentra ya que mi alojamiento de PA no sirve una cámara.
Entonces, alguien me sugirió que abriera la cámara web a través de JavaScript, ya que trata con la máquina del cliente y luego pasa su feed a la máquina del servidor, que es mi alojamiento.
Pero como soy un novato en Python, no puedo entender cómo realizar la tarea anterior. Encontré este fragmento de código js pero no sé cómo y dónde agregarlo en mi aplicación Django.
Código para obtener el feed con Javascript
var video = document.querySelector("#videoElement");
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({video: true}).then(function(stream) {
video.srcObject = stream;
}).catch(function(err0r) {
console.log("Something went wrong!");
});
}
Mi código de Python para abrir la cámara y detectar caras es el siguiente (funciona en el servidor local)
import cv2
cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')
cam = cv2.VideoCapture(0)
while True:
ret, frame = cam.read()
frame = cv2.flip(frame, 1)
if ret:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=3)
for (x, y, w, h) in faces:
cropped = cv2.resize(frame[y:y+h, x:x+w], (198,198))
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
cv2.imshow('Stream', frame)
Cualquier ayuda es apreciada. Gracias de antemano