MFT自定义图像过滤器

时间:2012-07-31 16:56:54

标签: windows-runtime windows-store-apps ms-media-foundation mft

我目前正在开发一种Metro风格应用程序,它使用MFT(Media Foundation Transform)将网络摄像头的视频流过滤为灰度,如this示例中所示。

但是,现在我想应用其他类型的滤镜,例如曝光,色调,亮度,纹理,vignette等。This回答说我应该按顺序修改TransformChroma方法为达到这个。不幸的是,我无法弄清楚如何获得Y值,我只能得到U和V. 如何获得NV12,YUY2和UYVY格式的Y值?

非常感谢所有帮助,我总是接受答案!

1 个答案:

答案 0 :(得分:0)

您需要更改方法的签名(poto采用另一个参数并修改TransformImage_UYVY,TransformImage_YUY2和TransformImage_NV12方法以将该参数传递给更新的方法。您需要弄清楚如何为自己提取该值虽然如此。例如,查看下面的这段代码,你可以看到如何提取U和V值,并且Y值被分成两个字节 - 你需要做一些位逻辑来连接它们。你可以找到描述这些格式在线,例如here

// Byte order is U0 Y0 V0 Y1
// Each WORD is a byte pair (U/V, Y)
// Windows is little-endian so the order appears reversed.
BYTE u = pSrc_Pixel[x] & 0x00FF;
BYTE v = pSrc_Pixel[x+1] & 0x00FF;

TransformChroma(mat, &u, &v);