RGB图像旋转90度编程完成-视频处理基础(3)

       今天晚上旋转的代码编写了一下,并且测试成功了~。主要是完成RGB 24位的图像旋转;

     下面是源代码

    bool rgb24_rotate_90(unsigned char *src_rgb,unsigned int iWidth,unsigned int iHeight,bool direction)
    {
    if(!src_rgb)
    return false;
    unsigned int n=0;
    unsigned int linesize=iWidth*3;
    unsigned char *dst_rgb  = (unsigned char*)malloc(iWidth*iHeight*3);
    int i,j;
    if(direction)
    {
    for(j=iWidth;j>0;j--)
   for(i=0;i<iHeight;i++)
   {
   memcpy(&dst_rgb[n],&src_rgb[linesize*i+j*3-3],3);
  n+=3;
  }
  }
  else
  {
   for(j=0;j<iWidth;j++)
   for(i=iHeight;i>0;i--)
   {
   memcpy(&dst_rgb[n],&src_rgb[linesize*(i-1)+j*3-3],3);
   n+=3;
  }
  }
   memcpy(src_rgb ,dst_rgb ,iWidth*iHeight*3); // itmp = iLBytes*iHeight;
  free(dst_rgb);
  return true;
 }

那有怎么来验证正确性呢?

以下是我的方法;

     之前我编写过用Directshow打开摄像头的程序;然后我就取出摄像头的一帧,将这一帧图像的数据旋转,然后保存成JPEG图像保存出去了;

主要是以下几个函数。

         pGrabber->GetCurrentBuffer(&cbBuffer, (long *)pBuffer);  //获取一帧图像数据cbBuffer为得到的unsigned char,pBuffer为总花的点数
        rgb24_rotate_90(pBuffer,frameSetW,frameSetH,false);



逆时针旋转90度


顺时针旋转90度


编程环境:Window7 32位;编程工具:VS2010 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值