YUV420视频流播放旋转90度,求助!



YUV420视频流播放旋转90度,求助!

用网络上给的相关旋转的方法出现花屏四重影的问题,

public static void rotateYUV240SP(byte[] src,byte[] des,int width,int height)
 {
   
  int wh = width * height;
  //旋转Y
  int k = 0;
  for(int i=0;i<width;i++) { 
              for(int j=0;j<height;j++)  
              { 
                            des[k] = src[width*j + i];             
                            k++; 
             } 
      } 
     
      for(int i=0;i<width/2;i++) { 
              for(int j=0;j<height/2;j++)  
             {    
               des[k] = src[wh+ width/2*j + i];     
                des[k+width*height/4]=src[wh*5/4 + width/2*j + i]; 
                k++; 
              } 
             }   
  
 }

用的是上述的方法,哪位有具体的修改方法,求助,救命!

你可以使用以下代码来旋转一个单色灰图的 YUV420sp 格式图像 90 : ```c++ #include <stdio.h> void rotateYUV420sp90Degree(unsigned char *src, unsigned char *dst, int width, int height) { int wh = width * height; int uvHeight = height >> 1; // 旋转 Y 分量 int k = 0; for (int i = 0; i < width; i++) { for (int j = height - 1; j >= 0; j--) { dst[k++] = src[j * width + i]; } } // 旋转 U 和 V 分量 for (int i = 0; i < width; i += 2) { for (int j = uvHeight - 1; j >= 0; j--) { dst[k++] = src[wh + j * width + i]; dst[k++] = src[wh + j * width + i + 1]; } } } int main() { // 假设输入的 YUV420sp 图像是 128x128 大小 int width = 128; int height = 128; int wh = width * height; int uvSize = wh >> 2; unsigned char *src = new unsigned char[wh + uvSize * 2]; unsigned char *dst = new unsigned char[wh + uvSize * 2]; // 假设将输入的图像初始化为某个值 for (int i = 0; i < wh + uvSize * 2; i++) { src[i] = i; } rotateYUV420sp90Degree(src, dst, width, height); // 输出旋转后的图像 for (int i = 0; i < wh + uvSize * 2; i++) { printf("%d ", dst[i]); } delete[] src; delete[] dst; return 0; } ``` 上述代码使用一个 `rotateYUV420sp90Degree` 函数来旋转 YUV420sp 图像。这个函数首先旋转 Y 分量,然后旋转 U 和 V 分量。在 `main` 函数中,假设输入的图像大小为 128x128,将输入的图像初始化为某个值,然后调用 `rotateYUV420sp90Degree` 函数进行旋转,并打印旋转后的图像数据。 请注意,上述代码仅适用于 YUV420sp 格式的图像,如果输入的图像格式不是 YUV420sp,则需要进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值