从Flask服务器访问客户端网络摄像头

时间:2016-03-02 00:51:00

标签: python-2.7 opencv flask face-recognition

我正在使用Flask作为我在Ubuntu 14.04计算机上运行的Web服务器进行人脸识别项目。我使用OpenCV 2.4.9作为我的图像处理软件,使用Python2.7编写。我希望能够通过浏览器访问客户端网络摄像头,从网络摄像头流中捕获图像或帧,并将其发送回服务器进行处理。有没有一种简单的方法使用python来获取对客户端网络摄像头的访问权限,或者是否可以将JavaScript与我当前的代码结合使用。

1 个答案:

答案 0 :(得分:6)

我假设您对应用程序的架构决策更感兴趣,具体的实现细节。您需要为此应用程序使用客户端服务器端

客户端是带有javascript的html页面,它将从网络摄像头捕获图像。有关此主题的互联网上有许多资源。 This article解释了它如何与一些例子一起使用。我建议使用一些javascript库like this one

接下来要决定客户端应用程序和服务器端如何传输图像数据。如果您想将网络摄像头视频流式传输到服务器,进行一些计算并将数据流回客户端应用程序,WebSockets是您的朋友。这个tutorial描述了如何为websockets设置flask应用程序。

更简单的方法是将POST图像数据发送到服务器,进行一些计算并响应客户端。这种方法的缺点是它不适合连续视频处理。但您可以将其用于单视频帧处理。否则,您会在请求中充斥您的服务器。

最后要决定的是对服务器端的图像进行了多少处理。如果你要进行一些需要很长时间的大量计算,我建议celery用于后台任务。 HOWEVER 这会大大改变架构。

对于概念证明,我建议遵循。使用网络摄像头拍摄单张图像,将其发布到服务器,对图像进行快速计算并使用您已计算的内容进行响应。

祝你好运。