我在 Django 中开发了一个 WebApplication,它有一个包含 OpevCV 代码的视图方法,当触发时,它会打开用户网络摄像头来检测它的脸。这个应用程序在我的本地服务器上运行良好,但是当我在 PythonAnywhere 上托管它时,它说找不到相机,因为我的 PA 托管不提供相机。
所以有人建议我通过javascript打开网络摄像头,因为它处理客户端机器,然后将其提要传递给我的托管服务器机器。
但由于我是 Python 新手,我无法弄清楚如何执行上述任务。我找到了这段 js 代码,但我不知道如何以及在哪里将它添加到我的 Django 应用程序中。
使用 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!");
});
}
Run Code Online (Sandbox Code Playgroud)
我用于打开相机和检测人脸的Python代码如下(它在localserver中工作)
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 = …Run Code Online (Sandbox Code Playgroud) 我正在使用 get api 调用来使用 http 从 json doc 中获取数据。但是我只启用了对令牌持有者的授权。localStorage.getItem("token");当我调用 get 请求时,我想在标题中的 Authorization 中传递令牌的值(我可以通过)。
API.SERVICE.TS
import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs';
import { HttpClientModule } from '@angular/common/http';
import { HttpClient, HttpRequest, HttpEventType, HttpHeaders, HttpParams, HttpEvent, HttpErrorResponse, HttpResponse } from '@angular/common/http';
import 'rxjs/add/operator/map';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private http: Http) { }
getTransferIp(){
return this.http.get('http://localhost:3003/transferip').map(res => res.json() );
}
}
Run Code Online (Sandbox Code Playgroud)
目前,只有当我关闭节点服务器获取路由器中的身份验证时,我才被允许获取数据......但我不想这样做,也不使用拦截器
在下面附加节点服务器文件... …