RGB图像旋转90度编程完成-视频处理基础(3)
来源:互联网 发布:数据库测试包括什么 编辑:程序博客网 时间:2024/05/20 23:40
今天晚上旋转的代码编写了一下,并且测试成功了~。主要是完成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
- RGB图像旋转90度编程完成-视频处理基础(3)
- 图像旋转原理说明-视频处理基础(2)
- 获取RGB图像的单个点的数据-视频处理基础(1)
- 彩色图像处理(RGB图像)
- 视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )
- OpenCV完成图像旋转
- RGB图像任意角度旋转
- OPENCV图像处理基础(三)播放一个视频
- 图像处理(五)图像旋转
- 图像处理 - 图像旋转
- 图像处理基础(像素、RGB、YUV etc.)的那点小事
- 【图像处理】图像几何变换基础(非弹性变换下如何计算旋转矩阵)
- Python图像处理(3):视频显示
- 图像处理之图像rgb取平均(java)
- 图像旋转90度
- 图像旋转90度
- 图像处理 YCbCr转RGB
- K-means 处理 RGB 图像
- hdu 4857 逃生 (拓扑排序+保证最小在前面)
- UDK——VS开发环境配置:nFringe 与 UnrealScriptIDE
- 为RT-Thread实现一个傻瓜式的工程向导工具(二)
- UItableView编辑的使用edit, UItableView的一些常用方法
- java 类库分析之HashMap
- RGB图像旋转90度编程完成-视频处理基础(3)
- 解决相册图片旋转的问题
- 虚函数重载的相关问题
- node之版本升级和管理
- linux 内存管理系列2
- 比较大小-类模板
- Android常用类库说明
- Spring3.0与Quartz的整合实现定时任务调度
- Dynamics CRM2013 Server2012下部署ADFS和IFD遇到的问题No Organization were retrived