如何通过Opencv4nodejs实现视频流解析与获取?
磐创AI本文我们学习一个新的工具,即Opencv4nodejs。它不是基于python的OpenCV,而是基于nodejs的OpenCV。OpenCV在计算机视觉应用中起到至关重要的作用,我们可以使用Opencv4nodejs在web应用中应用OpenCV,实现各种应用,包括人脸检测、人脸标记检测、人脸识别,甚至深度神经网络的目标识别等等…
本文,我们将获取摄像头并将其放入节点应用程序中,然后使用Express node js和Socket IO托管它。在深入研究opencv4nodejs的人工智能部分之前,让我们先看一下实现的基本步骤。步骤:导入所需的库。从本地计算机捕获视频源。获取视频源并将其流格式传输到web应用程序中。创建一个基本的html文件或创建一个EJS模板。
在客户端使用Socket IO库将客户端连接到本地主机或任何网络让客户收听该图像并对其进行编码为FramesPerSecond设置一个常量值
第一步:这里是必需的库Opencv4nodejsExpresshttpSocket IOPath如图所示导入它们
第二步:现在我们需要从本地机器上获取视频,
你们可以看到这看起来不像python代码!
第三步:获取视频源并使用适当的时间间隔将其流式传输到web应用程序中,即我们将对任何正在收听我们服务器的人进行公开广播。这也是我们的服务器端。
我们已经获得了视频捕获和编码的图像。我们之所以要编码,是因为所有被捕获的图像都是以矩阵格式读取的,这也是我们需要将它们编码为base64的主要原因,然后该字符串将通过万能的Socket IO进行广播。服务器端所需的所有设置都已完成,接下来实现客户端。
第四步:
对于客户端,没有创建一个普通的HTML文件,而是创建了一个EJS模板,如果你要执行git repo,请按照GitHub(https://github.com/narenltk)进行操作,我提供了在执行git克隆时如何使用它的必要步骤。
第五步:现在在客户端已经下载Socket IO库,即使用链接:https://cdnjs.com/libraries/socket.io
第六步:将客户端连接到具有指定端口的本地主机,或者像我所做的那样让它侦听任何网络。你可以参考上面的图片。
第七步:现在需要我们的客户就可以收听到这个图像并按图示进行编码,
第八步:现在我们所要做的就是为FramesPerSecond设置一个常量值,你还可以更改它并从中获得不同的效果。可以尝试使FramesPerSecond=10并将其更改为50,然后使其为100,你可以看到不同的输出结果。在这个项目中,如果你启动服务器,相机将开始运行,你不需要做转换,它会给你一个正常的相机源,而不是镜像源。
尽情享受OpenCV4nodejs …如果你想用ngrok托管它,可以看我在GitHub中给出的步骤。https://github.com/narenltk
参考:https://www.npmjs.com/package/opencv4nodejs