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
fuente
{ details: not found }
Necesita obtener la transmisión de video en vivo usando javascript, luego alimentar esa transmisión a opencv2 para que funcione.
Uso: obtenga videostream en vivo en nodejs
Obtendrá una URL
"http://localhost:3000"
que puede usar en el código de Python de la siguiente manera:fuente