ImageWatch for YV12和NV12的像素格式是什么?

时间:2018-03-27 15:21:14

标签: c++ visual-studio image-processing debuggervisualizer bgr

有一个很好的Visual Studio扩展Image Watch

它可以在RAM中使用任意地址,并使用@mem运算符将其内容显示为图像。

  

@mem(address, type, channels, width, height, stride):将原始内存解释为像素,从addressUINT64)开始,使用频道type(请参阅Pixel Formats),编号为{{ 1}}(channels),UINT32width),UINT32height)和UINT32stride) 。示例:UINT32

根据help page,它可以显示几种复杂的像素格式,其中包括BGR,NV12和YV12。

  

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

     
      
  • RG,UV

  •   
  • RGB,BGR,YUV

  •   
  • RGBA,BGRA

  •   

...

  

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

     
      
  • NV12(两个平面:一个Y平面,一个打包的UV平面,在两个维度上二次采样)

  •   
  • YV12(三个平面:一个Y平面,每个包装一个U和V平面,两个维度都经过二次采样)

  •   

但是,我不清楚如何让Image Watch以@mem(myimg.data, UINT8, 1, 320, 240, 320)NV12格式显示YV12格式的图片。

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

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

我尝试了多种频道和格式字符串的组合,有或没有引号:@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]相同。

0 个答案:

没有答案