5

有一个不错的 Visual Studio 扩展Image Watch

它可以在 RAM 中获取任意地址,并将其内容显示为带有@mem操作符的图像。

@mem(address, type, channels, width, height, stride):将原始内存解释为像素,从address( UINT64) 开始,具有通道type(请参阅像素格式)、channels( UINT32)、width( UINT32)、height( UINT32) 和stride( UINT32) 的数量。例子:@mem(myimg.data, UINT8, 1, 320, 240, 320)

根据帮助页面,它可以显示几种复杂的像素格式,BGR、NV12和YV12就是其中之一。

可选地,格式字符串可以与像素格式相关联。它指定了每个渲染通道的语义:

  • RG、紫外线

  • RGB、BGR、YUV

  • RGBA、BGRA

...

还支持许多特殊的 YUV 格式。在这种情况下,格式字符串还定义了数据布局。

  • NV12(两个平面:一个 Y 平面,一个压缩 UV 平面,在两个维度上都被 2 次采样)

  • YV12(三个平面:一个 Y 平面,一个压缩 U 和 V 平面,在两个维度上都被 2 次采样)

但是,我不清楚如何使 Image Watch 使用运算符显示图像NV12YV12格式@mem

帮助页面不包含太多信息。

我设法显示灰色单通道图像,指定UINT8为通道类型。我还可以正确显示通道类型 =UINT8和 3 个通道的 BGR 图像:@mem(pBGR, UINT8, 3, 640, 480, 640*3). 这在文档中有所描述,但并不明显。

我已经尝试了各种通道数量和格式字符串的组合,带或不带引号:、、、@mem(ptr, NV12, 3, 640, 480, 640*3)@mem(ptr, "NV12", 1, 640, 480, 640*3)-@mem(ptr, UINT8NV12, 3, 640, 480, 640*3) @mem(ptr, NV12UINT8, 1, 640, 480, 640*3)不走运。我只看到带有单词的灰色矩形[invalid]

YV12.

4

0 回答 0