【发布时间】:2020-08-09 12:35:38
【问题描述】:
我正在使用 Visual Studio 2019 编写 C++ 应用程序。我想试验实时视频的神经网络处理。为此,我需要原始 RGB 视频数据。我希望该解决方案可以接受实时摄像头视频或视频播放帧。
许多 google 搜索发现已弃用的函数,因此我正在寻找 Windows 10 标配的当前最佳框架。例如,我的 google 搜索中的第一项在已弃用的 MFPlay 中。
这看起来很有希望: https://docs.microsoft.com/en-us/windows/win32/multimedia/using-video-capture。但是,虽然 Microsoft 文档给出了许多函数的语法,但并没有很好地解释函数的用途。
-
例如,它经常谈论捕获窗口,但是捕获窗口是做什么用的?当我只想为我的命令行应用程序提供视频帧流时,为什么需要一个窗口?
-
capSetCallbackOnFrame看起来很有趣,但随后说“在流式视频捕获期间不使用此回调函数。”那么……这有什么意义呢?
我希望我的最终代码如下所示:
设置线程:
- 查找视频捕获设备
- 为 RGB 模式设置视频捕获
- 注册一个帧回调函数
回调线程:
- 缓冲帧
处理线程:
- 在保存的缓冲区上做我的事情而不阻塞回调线程
【问题讨论】:
-
您可以使用几个库。 opencv 就是其中之一。那是我唯一用于图像捕捉的一个,它很容易设置和使用。但还有更专业的。其中许多库都是开源的,并提供跨平台兼容性。
标签: c++ visual-studio-2019 rgb video-capture