日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

YUV图像

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 YUV图像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
YUV420P,Y,U,V三個分量都是平面格式,分為 I420 YV12 I420 格式和 YV12 格式的不同處在U平面和V平面的位置不同。在I420格式中,U平面緊跟在Y平面之后,然后才是V平面(即:YUV);但YV12則是相反(即:YVU)。

YUV420SP, Y分量平面格式,UV打包格式, 即NV12。 NV12與NV21類似,U 和 V 交錯排列,不同在于UV順序。

I420: YYYYYYYY UU VV ? ?=>YUV420P

YV12:?YYYYYYYY?VV UU ? ?=>YUV420P

NV12:?YYYYYYYY?UVUV ? ? =>YUV420SP

NV21:?YYYYYYYY?VUVU ? ? =>YUV420SP

?

dxva 輸出?NV12

x264 輸入、輸出 I420

?

void yuv420p_to_yuv422(uint8_t * yuv420[3], uint8_t * dest, int width,
??????????????????????? int height)
{
??? unsigned int x, y;
?
?
???? for (y = 0; y < height; ++y) {
?????? uint8_t *Y = yuv420[0] + y * width;
??????? uint8_t *Cb = yuv420[1] + (y / 2) * (width / 2);
?????? uint8_t *Cr = yuv420[2] + (y / 2) * (width / 2);
??????? for (x = 0; x < width; x += 2) {
???????????? *(dest + 0) = Y[0];
?????????? *(dest + 1) = Cb[0];
?????????? *(dest + 2) = Y[1];
??????????? *(dest + 3) = Cr[0];
???????????? dest += 4;
???????????? Y += 2;
???????????? ++Cb;
???????????? ++Cr;
???????? }
???? }
}

?

?

YUV420P

最近一周整理了一下網上關于YUV數據的轉化和顯示方面的資料, 與大家共享一下.

?

1.?關于YUV.

百度百科:?http://baike.baidu.com/view/189685.htm

英文資料:?http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12.29

YUV轉換算法:?http://www.kldby.com/baidunews/index.php/article/jdgg/2010-10-04/10436.html

YUV格式:?http://www.fourcc.org/yuv.php

自定義數據結構參考:?http://www.rosoo.net/a/200604/6051.html

?

2. YUV數據的顯示.

目前嘗試了兩種顯示YUV數據的方法 YUV表面顯示和GDI顯示.

YUV表面顯示:

?????這個網上有很多源碼, 當然為了大家省去一些查找和編譯的苦惱, 提供我整理后的源碼.

這種顯示方式呢, 比較直接, CPU占用也不是很高, 而且不管是YUV420還是YUV420P(分辨率1280*720)都可以顯示出來.

但是有一個缺點是: 只能創建一個顯示畫面, 就是要同時顯示幾個畫面是不行的, 而且按下WIN鍵和D后, 畫面還在屏幕上,

很無語. (我不確定此點是否正確, 我在一天之內沒突破它的這個缺點后放棄).

?

GDI顯示:

?? 就是用相關算法將YUV420P數據--->RGB24之后,使用StretchDIBits函數將每一幀的圖像顯示出來.

?? 在轉化算法方面, 在網上找到不止10幾種, 除去一些存在錯誤無法編譯的外, 篩選了5種方法.

?? 此種顯示方法上, CPU占用肯定比YUV表面顯示高, 但至少可以多畫面顯示了,并且沒有其他缺點.

?? 轉化算法見下一篇隨筆.

?

YUV420 顯示源碼 http://files.cnblogs.com/doorsky/YUV%e6%98%be%e7%a4%ba.rar

YUV文件 http://files.cnblogs.com/doorsky/YUV%e6%96%87%e4%bb%b6.rar

?

(在本文中,U 一詞相當于 Cb,V 一詞相當于 Cr。)

YUV422 format as shown below

4:2:2 表示 2:1 的水平取樣,沒有垂直下采樣

?

YUV420 format as shown below 4:2:0 表示 2:1 的水平取樣,2:1 的垂直下采樣. YUV4:2:0并不是說只有U(即 Cb), V(即 Cr)一定為 0,而是指U:V互相援引,時見時隱,也就是說對于每一個行,只有一個U或者V份量,如果一行是4:2:0的話,下一行就是4:0:2,再下一行是4:2:0...以此類推。

?

總結

以上是生活随笔為你收集整理的YUV图像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。