【问题标题】:Access to the camera from the system the application is running on从运行应用程序的系统访问相机
【发布时间】:2018-11-21 16:34:24
【问题描述】:

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

我知道问题出在这行代码

cam = cv2.VideoCapture(0)

我在网上查到了这个post,它要求我使用javascript 来访问网络摄像头。

  1. 这是最好的选择,还是我可以通过某种方式更改那行 opencv 代码以访问运行应用程序的系统中的摄像头?

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

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

提前致谢

【问题讨论】:

  • 您的问题与您链接的问题有何不同?
  • 我想知道我是否可以用 python 本身完成任务。我还想知道如何将 python 代码与来自 javascript 的视频提要链接

标签: javascript python django opencv


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

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-18
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多