将YUV420P图像水平镜像翻转——音视频(一)

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了将YUV420P图像水平镜像翻转——音视频(一)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

YUV格式

将YUV420P图像水平镜像翻转——音视频(一)

 

Y:明亮度  UV:色彩及饱和度

YUV420即4个Y对应一组UV

YUV420P的存储

YUV 420P 和 YUV 420SP 都是基于 Planar 平面格式 进行存储的,先存储所有的 Y 分量后, YUV420P 类型就会先存储所有的 U 分量或者 V 分量,而 YUV420SP 则是按照 UV 或者 VU 的交替顺序进行存储

 

 YUV420P 的格式:

将YUV420P图像水平镜像翻转——音视频(一)

其在码流中的表现形式为:

将YUV420P图像水平镜像翻转——音视频(一)

旋转YUV420P的图像

 1 void yuvMirror(unsigned char* yuv, int w, int h)
 2 {
 3     int i;
 4     int a, b;
 5 
 6     for (i = 0; i < h; i++)
 7     {
 8         a = i * w;
 9         b = (i + 1) * w - 1;
10         while (a < b)
11         {
12             _swap(yuv[a], yuv[b]);
13             a++; b--;
14         }
15     }
16 
17     int uStartPos = w * h; 
18     for (i = 0; i < h / 2; i++)
19     {
20         a = i * w / 2;
21         b = (i + 1) * w / 2 - 1;
22         while (a < b)
23         {
24             _swap(yuv[a+ uStartPos], yuv[b+ uStartPos]);
25             a++; b--;
26         }
27     }
28 
29     int vStartPos = w * h / 4 * 5;
30     for (i = 0; i < h / 2; i++)
31     {
32         a = i * w / 2;
33         b = (i + 1) * w / 2 - 1;
34         while (a < b)
35         {
36             _swap(yuv[a+ vStartPos], yuv[b+ vStartPos]);
37             a++; b--;
38         }
39     }
40 
41 }
1 void _swap(unsigned char&amp; a, unsigned char& b)
2 {
3   a ^= b;
4   b ^= a;
5   a ^= b;
6 }

效果:

将YUV420P图像水平镜像翻转——音视频(一)

 

 参考链接:

音视频编解码: YUV存储格式中的YUV420P,YUV420SP,NV12, NV21理解(转) 

yuv图片旋转180度,镜像水平翻转

脚本宝典总结

以上是脚本宝典为你收集整理的将YUV420P图像水平镜像翻转——音视频(一)全部内容,希望文章能够帮你解决将YUV420P图像水平镜像翻转——音视频(一)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。