图像旋转算法-向左旋转90度

好久没有写算法代码了,最近由于手机产品需要对图像进行旋转90度,写了个基本的验证算法,

在android手机x10i上也试验过:

APP_ABI:armeabi          176x144的图像平均10ms左右可以完成,320x240的图像30ms左右可以完成

APP_ABI:armeabi-v7a  176x144的图像平均2ms左右可以完成,320x240的图像10ms左右可以完成

/*
*	图像旋转
*	将图像向左旋转90度,以下为具体算法
*	针对RGB,24图像
*/
void rotate_90_left()
{
	int src_width = 144;
	int src_height = 176;

	int dst_width = 176;
	int dst_height = 144;

	uint8_t* lp_src = new uint8_t[src_width*src_height*3];
	uint8_t* lp_dst = new uint8_t[dst_width*dst_height*3];

	OutputDebugString("源图像数据:\n");
	for(int h=0;h<src_height;h++)
	{
		for(int w=0;w<src_width;w++)
		{
			//此处为构造源图像,实际应用时可以去掉下面
			lp_src[w*3 + h*src_width*3 + 0] = w;
			lp_src[w*3 + h*src_width*3 + 1] = w;
			lp_src[w*3 + h*src_width*3 + 2] = w;


			输出源图像数据
			char xx[32]={0};
			sprintf(xx,"%03d%03d%03d ",
				lp_src[w*3 + h*src_width*3 + 0],
				lp_src[w*3 + h*src_width*3 + 1],
				lp_src[w*3 + h*src_width*3 + 2]);
			OutputDebugString(xx);

			//将源图像素点值赋给新的图像
			lp_dst[(dst_height-w-1)*dst_width*3 + h*3 + 0]= lp_src[w*3 + h*src_width*3 + 0];
			lp_dst[(dst_height-w-1)*dst_width*3 + h*3 + 1]= lp_src[w*3 + h*src_width*3 + 1];
			lp_dst[(dst_height-w-1)*dst_width*3 + h*3 + 2]= lp_src[w*3 + h*src_width*3 + 2];
		}
		OutputDebugString("\n");
	}
	开始输出调试日志,以查看目标图像数据是否正确
	OutputDebugString("目标图像数据:\n");
	for(int x=0;x<dst_height;x++)
	{
		for(int y=0;y<dst_width;y++)
		{
			char xx[32]={0};
			sprintf(xx,"%03d%03d%03d ",
				lp_dst[y*3 + x*dst_width*3 + 0],
				lp_dst[y*3 + x*dst_width*3 + 1],
				lp_dst[y*3 + x*dst_width*3 + 2]);

			OutputDebugString(xx);
		}
		OutputDebugString("\n");
	}
	结束输出调试日志
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值