我正在使用Visual Studio 2019编写C ++应用程序。我想尝试神经网络处理实时视频。为此,我需要原始的RGB视频数据。我希望该解决方案接受实时摄像机视频或视频播放框架。
[许多Google搜索找到不推荐使用的功能。所以我正在寻找最新的Windows 10随附的标准框架。例如,我的Google中的第一项在已弃用的MFplay中搜索。
这看起来很有希望:https://docs.microsoft.com/en-us/windows/win32/multimedia/using-video-capture但是,尽管Microsoft文档提供了许多功能的语法,但它确实不能很好地解释功能的目的。
1)例如,它通常需要一个捕获窗口,但是cature窗口有什么用?当我只需要命令行应用程序的视频帧流时,为什么需要一个窗口?
2)capSetCallbackOnFrame()看起来很有趣,但是他们说:“在流视频捕获期间不使用此回调函数。”所以.....他们有什么意义?
我希望我的最终代码看起来像:
设置线程:
1) find a video capture device
2) setup video capture for RGB mode
3) register a frame callback function
回调线程:
1) buffer the frame
处理线程:
1) do my stuff on the saved buffer without blocking the callback thread
如评论中所述,OpenCv是一个很棒的库,您可以使用它进行这项工作。
您也可以使用openFrameWorks。它包含许多示例,以及用于带有回调的实时视频处理(带有或不带有视频捕获)的模板代码。