图像旋转c代码实现(90度,-90度,180度)
//顺时针90度
//src图像数据
//srcW图像宽度
//srcH图像⾼度
//channel图像通道,如果是RGB,BGR,=3,RGBA=4,GRAY=1
注意旋转90后,图像数据的宽⾼会对调,显⽰时候⾃⼰注意
intRotationRight90(unsignedchar*src,intsrcW,intsrcH,intchannel)
{
unsignedchar*tempSrc=NULL;
intmSize=srcW*srcH*sizeof(char)*channel;
inti=0;
intj=0;
intk=0;
intdesW=0;
intdesH=0;
desW=srcH;
desH=srcW;
tempSrc=(unsignedchar*)malloc(sizeof(char)*srcW*srcH*channel);
memcpy(tempSrc,src,mSize);
for(i=0;i
{
for(j=0;j
{
for(k=0;k
{
src[(i*desW+j)*channel+k]=tempSrc[((srcH-1-j)*srcW+i)*channel+k];
}
}
}
free(tempSrc);
return0;
}
//逆时针90度
intRotationLeft90(unsignedchar*src,intsrcW,intsrcH,intchannel)
{
unsignedchar*tempSrc=NULL;
intmSize=srcW*srcH*sizeof(char)*channel;
inti=0;
intj=0;
intk=0;
intdesW=0;
intdesH=0;
desW=srcH;
desH=srcW;
tempSrc=(unsignedchar*)malloc(sizeof(char)*srcW*srcH*channel);
memcpy(tempSrc,src,mSize);
for(i=0;i
{
for(j=0;j
{
for(k=0;k
{
{
src[(i*desW+j)*channel+k]=tempSrc[(j*srcW+i)*channel+k];
}
}
}
free(tempSrc);
return0;
}
//旋转180度
intRotationDown(unsignedchar*src,intsrcW,intsrcH,intchannel)
{
unsignedchar*tempSrc=NULL;
intmSize=srcW*srcH*sizeof(char)*channel;
inti=0;
intj=0;
intk=0;
intdesW=0;
intdesH=0;
desW=srcW;
desH=srcH;
tempSrc=(unsignedchar*)malloc(sizeof(char)*srcW*srcH*channel);
memcpy(tempSrc,src,mSize);
for(i=0;i
{
for(j=0;j
{
for(k=0;k
{
src[(i*desW+j)*channel+k]=tempSrc[((srcH-1-i)*srcW+srcW-1-j)*channel+k];
}
}
}
free(tempSrc);
return0;
}
本文发布于:2022-11-13 16:09:52,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/11992.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |