我正致力于计算机视觉项目,并试图找到一种方法,如何使用现代UI构建桌面应用程序,以便能够显示由我的算法处理的实时视频。创建视频流和Web浏览器的代码将位于同一台计算机上。
我有一个本机C ++代码,可以从IP摄像头捕获视频,对捕获的帧进行一些处理,并在其上绘制结果。例如 - 它检测人脸并在视频帧上绘制边界框。视频处理代码非常繁重,无法翻译成javascript。
之后,我想在使用NW.js构建的桌面应用程序中,在基于Web的GUI中显示带有框的框架。
问题是如何以尽可能低的CPU使用开销显示已处理的帧?
我可以将每个帧压缩为JPG(PNG / BMP ...)并将其发送到<img>
标记,但这种方式会占用太多CPU,这是最糟糕的解决方案。
完美的解决方案应该是通过本机代码将帧数据直接发送到GPU上的WebGL纹理,但是我找不到如何制作它的方法。
可能会有一些妥协将是RGB32(24)传输,但图像流相当沉重(大约每秒200 MB),这是一个2MP / 25fps IP摄像头的流。在未来,我希望能够在一台PC上使用多达4台摄像机。我有使用Qt的经验,这个任务可以用Qt解决,但我真的需要一些基于HTML5的GUI及其动画,样式和其他功能。
我的目标操作系统是Windows,但拥有跨平台解决方案会很好。如果Windows出了问题 - 我可以使用Linux。