用videoCapture和IAMStreamConfig拿到的支持的格式列表。
發現支持2中圖像格式,YV12和NV12。
具體是怎么樣的內存分布不知道。查了些文檔。自己修改了幾個圖。看出了點端倪
YV12
先看看 http://www.fourcc.org/yuv.php 上比較標準的定義:

NV12
NV12和YV12稍有不同,區別就在UV的位置。再看一張圖就很明了了!
在YV12中U和V都是連續排布的,而在NV12中,U和V就交錯排布的。看到內存中的排布很清楚,先開始都是Y,之后的都是U1V1U2V2的交錯式排布。對于像素的壓縮的效果是一樣的。但是可能是硬件加速的支持與否。
發現支持2中圖像格式,YV12和NV12。
具體是怎么樣的內存分布不知道。查了些文檔。自己修改了幾個圖。看出了點端倪
YV12
先看看 http://www.fourcc.org/yuv.php 上比較標準的定義:
YV12
This is the format of choice for many software MPEG codecs. It comprises an NxM Y plane followed by (N/2)x(M/2) V and U planes.
? | Horizontal | Vertical |
Y Sample Period | 1 | 1 |
V Sample Period | 2 | 2 |
U Sample Period | 2 | 2 |
Positive biHeight implies top-down image (top line first)
這種圖片其實不是很清楚的, 搞了一個非常明白的

這個wiki上面的圖片示例非常明了,第一個圖標識了圖片真正像素的表示。
可 以看到Y1, Y2, Y7, Y8這些物理上相近的4個像素公用了同樣的U1和V1,相似的Y3,Y4,Y9,Y10用的就是U2和V2。這里不同的顏色把這個特性刻畫的非常形象,一 目了然。Impressive!!一直覺得教育,或者說基礎的教育一定要以這樣的模式來闡述這樣才能知其所以然,那種盲目的抄了一本國外的教材或者合并了 幾本破書的教材不是教人是毀人。 說遠了,言歸正傳。之前說的是物理像素的表示,在內存中的分布則是一個數組,順序就是YUV。所以如果知道所要表現的取悅的大小的話很容易查找到具體的YUV在數組中的位置。
NV12
NV12和YV12稍有不同,區別就在UV的位置。再看一張圖就很明了了!

在YV12中U和V都是連續排布的,而在NV12中,U和V就交錯排布的。看到內存中的排布很清楚,先開始都是Y,之后的都是U1V1U2V2的交錯式排布。對于像素的壓縮的效果是一樣的。但是可能是硬件加速的支持與否。