我正在使用django和opencv构建用于计算机视觉的Web应用程序。在Web应用程序中,存在一个按钮,按下该按钮可启动计算机的网络摄像头。问题是当我使用IP托管Web应用程序并用另一台计算机访问该应用程序并按下按钮时,计算机中的网络摄像头启动。
我知道问题出在这行代码中
cam = cv2.VideoCapture(0)
我在网上寻找并发现了post,这要求我使用JavaScript来访问网络摄像头。
是最好的选项,还是我可以通过某种方式更改opencv代码行以访问应用程序运行系统中的相机?
如果没有比javascript更好的方法,那么我也想知道一旦访问网络摄像头并将提要显示在屏幕上,如何链接其余的python代码(如javascript代码的人脸检测器和分类器?
我刚开始接触python,现在还有很多东西要学习。
预先感谢
答案 0 :(得分:1)
有很多不同的方法可以完成您要完成的工作,因此您需要专注于如何设计应用程序。
如果只需要在客户端摄像机上执行面部检测和跟踪,则可能需要看看https://trackingjs.com/,它是一个JS库,能够在客户端执行各种简单的计算机视觉任务。
如果您需要对传入的视频流执行一些更复杂的图像处理或分类任务,则可能需要执行以下操作:
步骤1:。在客户端使用JS获取客户端摄像头供稿。
第2步:以HTTPS模式服务您的Web应用程序(您将需要生成SSL证书):如果不这样做,则JS getUserMedia()
函数将不会执行,您将获得
getusermedia不再适用于不安全的来源
如果不确定如何在Python中生成SSL证书,可以使用https://pypi.org/project/pyOpenSSL/。
第3步:现在,客户端摄像机已打开,使用WebSocket将客户端视频供稿流式传输到后端服务器
第4步:您现在位于服务器端,可以在此处执行所有功能处理,并通过WebSocket将计算结果流回客户端。
步骤5:客户端的JS WebSocket侦听器将接收所有传入信息,并将最终结果显示在客户端屏幕上。
希望这会有所帮助