图像的缩放与旋转

本文介绍了一个使用OpenCV库实现的图像旋转与缩放的C++程序实例。该程序加载了一张图片,并通过键盘输入控制图像的旋转角度和是否进行缩放。此示例展示了如何利用OpenCV库中的函数来实现基本的图像处理操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "highgui.h"
#include "cv.h"
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
 IplImage* src = cvLoadImage("lena.jpg");
 IplImage* dst = cvCloneImage(src);

 int delta = 1;
 int angle = 0;
 int opt = 1; //1表示旋转加缩放,0表示旋转

 double factor; //表示方法系数
 cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
 cvShowImage("src",src);

 for (; ;)
 {
  float m[6];
  CvMat M = cvMat(2, 3, CV_32F,m);

  int w = src->width;
  int h = src->height;

  if(opt)
  {
   factor = (cos(angle*CV_PI/180) + 1.05)*2;
  }
  else
  {
   factor = 1;
  }
  m[0] = (float)(factor*cos(-angle*2*CV_PI/180));
  m[1] = (float)(factor*sin(-angle*2*CV_PI/180));
  m[3] = -m[1];
  m[4] = m[0];
  m[2] = w*0.5f;
  m[5] = h*0.5f;
  cvGetQuadrangleSubPix(src,dst,&M);
  cvNamedWindow("dst",1);
  cvShowImage("dst",dst);
  if (cvWaitKey(5) == 'q')
  {
   break;
  }
  angle = (int)(angle + delta) % 360;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值