图像旋转90度(CImage、opencv两种方式)

//读取原始图片信息

CImage * srcImage = new CImage();

srcImage->Load(strPicName);
BYTE* srcPtr=(BYTE*)srcImage->GetBits();
int srcBitsCount=srcImage->GetBPP();
int srcWidth=srcImage->GetWidth();
int srcHeight=srcImage->GetHeight();
int srcPitch=srcImage->GetPitch();

//删除原始图片

DeleteFile(strPicName);

//创建新图像  

CImage * destImage = new CImage(); 
destImage->Create(1200,800,srcBitsCount,0); 

//加载调色板
if(srcBitsCount<=8 && srcImage->IsIndexed())//需要调色板  
{  
RGBQUAD pal[256];  
int nColors=srcImage->GetMaxColorTableEntries();
if(nColors>0)  
{   
srcImage->GetColorTable(0,nColors,pal);  
destImage->SetColorTable(0,nColors,pal);//复制调色板程序  
}     
}   
//目标图像参数  
BYTE *destPtr=(BYTE*)destImage->GetBits();  
int destPitch=destImage->GetPitch();  
//复制图像数据  
for(int i=0 ; i<1200;i++)  
{  
for(int j=0;j<800;j++)

{

if(srcBitsCount == 24)

{

*(destPtr+ (799-j)*destPitch + 3*i) = *(srcPtr + i*srcPitch +3*j);//目的图片的第一列
*(destPtr+ (799-j)*destPitch + 3*i+1) = *(srcPtr + i*srcPitch +3*j+1);

*(destPtr+ (799-j)*destPitch + 3*i+2) = *(srcPtr + i*srcPitch +3*j+2);

}

else if(srcBitsCount == 8)

 

{

*(destPtr+ (799-j)*destPitch + i) = *(srcPtr + i*srcPitch +j);//目的图片的第一列

}

}
}   

//保存新图像
destImage->Save(strPicName);
delete srcImage;
delete destImage;

 

opencv:实现

        cv::Mat src = imread("E:\\1.jpg")
        cv::Mat temp, dst;
        transpose(src, temp);
        flip(temp, dst, 0);

        IplImage qImg = IplImage(dst);
        cvSaveImage(szJpgFile2, &qImg);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码猿杂谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值