Tôi đã phát triển Ứng dụng web trong Django có phương thức xem chứa mã OpevCV khi được kích hoạt sẽ mở webcam người dùng để phát hiện khuôn mặt của nó. Ứng dụng này hoạt động tốt trong máy chủ cục bộ của tôi nhưng khi tôi đã lưu trữ nó trên PythonAnywhere thì nó nói rằng máy ảnh không được tìm thấy vì lưu trữ PA của tôi không phục vụ máy ảnh.
Vì vậy, một người nào đó đề nghị tôi mở webcam thông qua javascript vì nó giao dịch với máy khách và sau đó chuyển nguồn cấp dữ liệu của nó cho máy chủ là máy chủ lưu trữ của tôi.
Nhưng vì tôi là một tân binh trong Python nên tôi không thể tìm ra cách thực hiện nhiệm vụ trên. Tôi đã tìm thấy đoạn mã js này nhưng tôi không biết cách và nơi để thêm mã này vào Ứng dụng Django.
Mã để nhận nguồn cấp dữ liệu bằng 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!");
});
}
Mã Python của tôi để mở camera và phát hiện khuôn mặt như sau (nó hoạt động trong máy chủ cục bộ)
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)
Bất kỳ trợ giúp được đánh giá cao. Cảm ơn bạn trước