织梦CMS - 轻松建站从此开始!

罗索

RGB24旋转90度和YUV420旋转90度

jackyhwei 发布于 2022-04-08 14:03 点击:次 
RGB24旋转90度和YUV420旋转90度
TAG: 旋转  RGB24  YUV420  

 RGB24旋转90度
//逆时针旋转90度
  1. void RGBRotate90_anticlockwise(BYTE *des,BYTE *src,int width,int height) 
  2.   if ((!des)||(!src)) 
  3.      { 
  4.     return; 
  5.      }     
  6.   int n = 0
  7.   int linesize = width*3; 
  8.   int i,j; 
  9.   for (j=width;j>0;j--) 
  10.   { 
  11.      for (i=0;i<height;i++)  
  12.       {  
  13.       memcpy(&des[n],&src[linesize*i+j*3-3],3); 
  14.       n+=3; 
  15.      } 
  16.   } 
//顺时针旋转90度
  1. void RGBRotate90_clockwise(BYTE *des,BYTE *src,int width,int height) 
  2.  
  3.  if((!des)||(!src)) 
  4.  { 
  5.    return; 
  6.  } 
  7.  int n = 0
  8.  int linesize = width*3; 
  9.  int i; 
  10.  int j; 
  11.  // 顺时针的旋转的算法 
  12.  for(j = 0;j < width ;j++)  
  13.  { 
  14.    for(iheight;i>0;i--) 
  15.    {  
  16.        memcpy(&des[n],&src[linesize*(i-1)+j*3-3],3); 
  17.      n+=3; 
  18.    } 
  19.  } 
 
//YUV420旋转90度
 
  1. void YUVRotate90(BYTE *des,BYTE *src,int width,int height) 
  2.   int i=0,j=0,n=0
  3.   int hw=width/2,hh=height/2; 
  4.   for(j=width;j>0;j--)  
  5.     for(i=0;i<height;i++)  
  6.     { 
  7.       des[n++] = src[width*i+j]; 
  8.     }     
  9.     unsigned char *ptmp = src+width*height; 
  10.     for(j=hw;j>0;j--) 
  11.     for(i=0;i<hh;i++)  
  12.     {  
  13.       des[n++] = ptmp[hw*i+j]; 
  14.     } 
  15.      
  16.     ptmp = src+width*height*5/4; 
  17.     for(j=hw;j>0;j--) 
  18.     for(i=0;i<hh;i++)  
  19.     { 
  20.       des[n++] = ptmp[hw*i+j]; 
  21.     }      
 
(lvbeans)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/202204/17865.html]
本文出处:博客园 作者:lvbeans 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容