转:https://www.cnblogs.com/hythink/p/5421720.html
1.读入照片
控制输出的标志定义
1 2 3 4 5 6 7 8 9 10
扫描二维码关注公众号,回复:
3106801 查看本文章
11 |
|
1 2 3 4 5 6 7 |
|
1)读入的照片由filename 配置,这里照片必须放在该目录下。如:filename = 'Koala.jpg'
2)filename找到字符串的起始位置。findstr('Koala.jpg','.jpg') = 6,所以就可以取到去掉后缀名的文件名
3)得到一个 .\文件名out\的目录
4)创建该目录
5)filestr = 目录+文件名,用于后面的数据输出,方便输出到 .\文件名out\目录下。这里 filestr = '.\Koalaout\Koala'
2. 调用matlab函数将rgb转换成yuv
1 2 |
|
3.分别取出YUV
Y,U,V数据保留矩阵存储方式,方便后面的4:2:2,4:2:0采样,更加直观
1 2 3 4 5 6 7 8 9 10 11 12 |
|
注意:reshape矩阵时,需要对结果做转置,保证是按行来将矩阵整理成行向量的
4.输出YUV444的数据到文件
1 2 3 4 5 6 7 8 9 10 11 12 |
|
在本例中:filename = [filestr '_444.txt'] = '.\Koalaout\Koala_444.txt'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
5.将 YUV4:4:4 转成 YUYV 4:2:2 packed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
说明:
1)4:2:2模式是保留所有的Y,U,V是每间隔1列抽取抽样一个点,如代码中所示。
2)YUYV 4:2:2 packed 即像素值是 YU/YV 交替存储的模式。存放的码流:[Y0 U0] [Y1 V1] [Y2 U2] [Y3 V3]
输出数据到文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
6. 将 YUV4:4:4 转成 YV12 4:2:0 planar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
说明:
1)yuv420sampU = U(1:2:size(U,1),1:2:size(U,2)); 从图片的第一行开始 每间隔1行 和 每间隔1列 采样一个U
2)yuv420sampV = V(2:2:size(V,1),1:2:size(V,2)); 从图片的第二行开始 每间隔1行 和 每间隔1列 采样一个V
数据数据到文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
观察命令输出,并等待关闭
1 2 3 4 |
|
打开输出的yuv文件查看图片
参考
1 |
|
1 |
|
1 |
|
代码链接:
1 |
|