由VFW(C#)返回的默认图像格式有一些未记录的值
我正试图从我的C#应用程序中征服VFW。大多数事情以前都是模糊不清的,毕竟我已经到了最后一点 当我启动摄像头驱动程序时,会显示一组消息,如由VFW(C#)返回的默认图像格式有一些未记录的值,c#,video-capture,vfw,C#,Video Capture,Vfw,我正试图从我的C#应用程序中征服VFW。大多数事情以前都是模糊不清的,毕竟我已经到了最后一点 当我启动摄像头驱动程序时,会显示一组消息,如 WM_CAP_GET_VIDEOFORMAT WM_CAP_SET_视频格式 然后,我在GET_VIDEOFORMAT上接收到指向BITMAPINFO结构的指针,其中(我认为,因为网络摄像机没有安装其本机驱动程序),结构中有一个名为biCompression的项,其值非常奇怪=0x32595559(844715353)。 始终是相同的值,并且RGBQUA
- WM_CAP_GET_VIDEOFORMAT
- WM_CAP_SET_视频格式
我认为这个问题的答案将有助于让每个人理解VFW。
0x32595559
字面上代表“YUY2”。若要在C++代码中构建此常量,则可以执行<代码> MaGeFrCC(‘y’、‘u’、‘y’、‘2’’)/代码>。该[已知]值表示将使用该像素格式对捕获的视频数据进行编码
WM_CAP_SET_VIDEOFORMAT
和WM_CAP_GET_VIDEOFORMAT
允许设置和获取视频捕获格式,但接受值的范围仅限于相机本身的实际支持,并由各自的驱动程序支持。这与已安装的编解码器无关,因为软件编解码器不会扩展相机对捕获视频进行编码的能力
这里也没有视频流图,您询问的是VFWAPI,而图来自另一个API DirectShow。使用VFW,您将获得相机支持的格式之一的视频帧(并配置为在其中传送视频),然后您可以自己处理这些数据,您可能希望查看合适的ICM/VCM编解码器并进行转换。0x32595559字面上代表“YUY2”。若要在C++代码中构建此常量,则可以执行<代码> MaGeFrCC(‘y’、‘u’、‘y’、‘2’’)/代码>。该[已知]值表示将使用该像素格式对捕获的视频数据进行编码
WM_CAP_SET_VIDEOFORMAT
和WM_CAP_GET_VIDEOFORMAT
允许设置和获取视频捕获格式,但接受值的范围仅限于相机本身的实际支持,并由各自的驱动程序支持。这与已安装的编解码器无关,因为软件编解码器不会扩展相机对捕获视频进行编码的能力
这里也没有视频流图,您询问的是VFWAPI,而图来自另一个API DirectShow。使用VFW,您将获得相机支持的格式之一的视频帧(并配置为在其中传送视频),然后您可以自己处理这些数据,并且您喜欢不同的编码。您可能希望向上查看合适的ICM/VCM编解码器并进行转换。如果要使用压缩,则需要执行自底向上的图像。高度=-480,而不是480。不确定如何在应用程序中执行此操作。您已经知道代码代表YUY2。现在,您所要做的就是在输出管脚上插入一个转换过滤器,将YUY2转换为RGB,并连接渲染器或下游的任何东西。或者,您可以在其中放置一个T形三通,并将变换连接到其中一个T形三通管脚,然后从那里抓住它。这取决于你想用它做什么。我不熟悉这个库,所以我不知道你对过滤图有多大的影响。对我来说,听起来像是在包装DShow。嗨,弗兰克,谢谢你的反馈。我正在处理VFW,我已经完成了从YUY2到位图的转换。它工作正常。我想了解的是。。。如果我是对的,在片场上会发生什么。它真的在寻找一个合适的编解码器来连接到当前的图形,那么我最好为每个客户提供YUV2编解码器,并使用从YUV2到RGD24bpp的转换。如果你想使用压缩,你需要做一个自底向上的图像。高度=-480,而不是480。不确定如何在应用程序中执行此操作。您已经知道代码代表YUY2。现在,您所要做的就是在输出管脚上插入一个转换过滤器,将YUY2转换为RGB,并连接渲染器或下游的任何东西。或者,您可以在其中放置一个T形三通,并将变换连接到一个T形三通