从运行应用程序的系统访问摄像机

时间:2018-11-21 04:14:31

标签: javascript python django opencv

我正在使用django和opencv构建用于计算机视觉的Web应用程序。在Web应用程序中,存在一个按钮,按下该按钮可启动计算机的网络摄像头。问题是当我使用IP托管Web应用程序并用另一台计算机访问该应用程序并按下按钮时,计算机中的网络摄像头启动。

我知道问题出在这行代码中

cam = cv2.VideoCapture(0)

我在网上寻找并发现了post,这要求我使用JavaScript来访问网络摄像头。

  1. 是最好的选项,还是我可以通过某种方式更改opencv代码行以访问应用程序运行系统中的相机?

  2. 如果没有比javascript更好的方法,那么我也想知道一旦访问网络摄像头并将提要显示在屏幕上,如何链接其余的python代码(如javascript代码的人脸检测器和分类器?

我刚开始接触python,现在还有很多东西要学习。

预先感谢

1 个答案:

答案 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侦听器将接收所有传入信息,并将最终结果显示在客户端屏幕上。

希望这会有所帮助