yuv422图像水平镜像

YUV422简介

YUV细分的话有Y’UV,YUV,YCbCr,YPbPr等类型;本文介绍YUV422图像在做水平镜像时需要注意的问题,数据存储方式为UYVY格式;

YUV422水平镜像注意问题

对于RGB图像水平镜像时,只需要依次将对应位置的RGB值调换即可;但对于YUV422数据格式则需额外注意数据排列问题:

UYVY格式的图像转换成RGB时,一个UYVY组合可以产生2个RGB的图像;如下图所示:
UYUV转RGB示意图
U Y 1 V Y 2 UY_{1}VY_{2} UY1VY2和RGB的转换公式如下:
R 1 = 1.164 ∗ ( Y 1 − 16 ) + 1.159 ∗ ( V − 128 ) R_{1} = 1.164*(Y_{1}-16) + 1.159*(V-128) R1=1.164(Y116)+1.159(V128);
G 1 = 1.164 ∗ ( Y 1 − 16 ) − 0.380 ∗ ( U − 128 ) + 0.813 ∗ ( V − 128 ) G_{1} = 1.164*(Y_{1}-16) - 0.380*(U-128)+ 0.813*(V-128) G1=1.164(Y116)0.380(U128)+0.813(V128);
B 1 = 1.164 ∗ ( Y 1 − 16 ) + 2.018 ∗ ( U − 128 ) ) B_{1} = 1.164*(Y_{1}-16) + 2.018*(U-128)) B1=1.164(Y116)+2.018(U128));
R 2 = 1.164 ∗ ( Y 2 − 16 ) + 1.159 ∗ ( V − 128 ) R_{2} = 1.164*(Y_{2}-16) + 1.159*(V-128) R2=1.164(Y216)+1.159(V128);
G 2 = 1.164 ∗ ( Y 2 − 16 ) − 0.380 ∗ ( U − 128 ) + 0.813 ∗ ( V − 128 ) G_{2} = 1.164*(Y_{2}-16) - 0.380*(U-128)+ 0.813*(V-128) G2=1.164(Y216)0.380(U128)+0.813(V128);
B 2 = 1.164 ∗ ( Y 1 − 16 ) + 2.018 ∗ ( U − 128 ) ) B_{2} = 1.164*(Y_{1}-16) + 2.018*(U-128)) B2=1.164(Y116)+2.018(U128));

由此需注意,在做反转时,需要将Y1和Y2做调换,这样才会在最后显示的RGB图像中完成镜像效果,如下图所示:
UYVY图像水平镜像示意图

代码示意

void flip_img(unsigned char *pIn,int H,int W){		
	unsigned char *pIn_start=NULL;
	unsigned char *pOut_end=NULL;
	int j=0,k=0;
	for(int i=0;i<H;i++){
		pIn_start=pIn+2*i*W;
		// pOut_end=pIn+2*i*W+2*W;
		pOut_end=pIn+2*i*W;
		k=2*W;
		j=0;
		unsigned char tmp;
		for (j=0;j<k;j+=4){			
			tmp=*(pIn_start+j);
			*(pIn_start+j)=*(pIn_start+2*W-4-j);
			*(pIn_start+2*W-4-j)=tmp;
			
			tmp=*(pIn_start+j+1);
			*(pIn_start+j+1)=*(pIn_start+2*W-1-j);
			*(pIn_start+2*W-1-j)=tmp;

			tmp=*(pIn_start+j+2);
			*(pIn_start+j+2)=*(pIn_start+2*W-2-j);
			*(pIn_start+2*W-2-j)=tmp;

			tmp=*(pIn_start+j+3);
			*(pIn_start+j+3)=*(pIn_start+2*W-3-j);
			*(pIn_start+2*W-3-j)=tmp;
			k=k-4;			
		}
	}
}

总结

本文主要介绍UYVY图像水平镜像时需要注意的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值