YUV 图像左右旋转处理 java实现

YUV 图像左右旋转处理 java实现

android 设备调用后置摄像后,直出图像保存一般存在旋转90度,所以我们需要进行一次旋转,下面是旋转的说明。

以图像编码为 NV21 为例,直出图像为逆时针旋转90度,故需顺时针旋转90度将图像放正。

示例图片逆时针旋转了90度:

示例90.png

正确方向的图片:

示例0.png

NV21 编码为 YYYY VUVU,定义直出的图片宽为 width(200),高为 height(400),YUV 大小为 width*height*3/2

对于 Y 分量来说,大小和图片像素对应,所以Y分量是一个宽高对换过程,而 VU 总共占图片大小的 1/2 且成对出现,因此旋转过程需要把两个作为一个整体旋转,计算是宽高也需选择其中一个进行减半。所以分两部分处理,一部分是Y,另一部分是VU。

1. Y 旋转部分:

Y 旋转比较简单,也就是原图像从上往下遍历,第一行为新图像的右边第一列

代码如下:

public static void main(String[] args) {
   

    int width = 10;
    int height = 6;

    int size = width * height;
    int[] src = new int[size];
    int[] dest = new int[size];

    String format = "%2d";

    for (int i = 0; i < size; i++) {
   
        src[i] = i + 1;
    }

	//核心交换
    for (int i = 0; i < height; i++) {
   
        for (int j = 0; j < width; j++) {
   
            dest[height * (j + 1) - 1 - i] = src[i * height + j];
        }
    }

    //=======输出src===========================
    System.out.println("src:");
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < height; i++) {
   
        for (int j = 0; j < width; j++
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值