在 ubuntu20.04 服务器上启动 Flask 应用程序时 Opencv 摄像头访问问题

Opencv camera access issue when launching flask app on ubuntu20.04 server

我在 linode 上的云服务器上部署了一个 flask 应用程序。我有 nginx 运行 静态文件和 gunicorn 运行 python 脚本。我还设置了一个 ufw 部署后,我单击 link 开始打开 ​​cv 循环,但它无法通过索引 0.

访问相机

[WARN:11] global /tmp/pip-req-build-24v3eisa/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video0): 无法通过索引

打开摄像头

当 运行 在本地时,脚本第一次运行良好,但我需要重新启动本地服务器并再次启动它才能工作。有没有办法在获得用户许可的情况下访问服务器上的用户摄像头?

我找到了一些关于从前端到服务器访问用户摄像头的原始问题的答案。我相信很多 python 问过这个问题的朋友都会觉得它有用。

看来,如果您想使用 Flask,您将需要使用 JS 的 getusermedia() 来访问用户相机并获得许可,并将其流回,如这篇数字海洋文章中所见;

https://www.digitalocean.com/community/tutorials/front-and-rear-camera-access-with-javascripts-getusermedia

我还在 streamlit 文档上找到了另一种使用 webrtc 的方法,这似乎更简单。唯一不利的是我将不得不重建应用程序以进行流式传输,但它非常用户友好并且不会成为问题! :)

https://discuss.streamlit.io/t/new-component-streamlit-webrtc-a-new-way-to-deal-with-real-time-media-streams/8669/31