OpenCV图像旋转

OpenCV实现图像旋转:

double angle = -atan( static_cast<double>(alignPoint[0].y - alignPoint[1].y) 
		                  / (alignPoint[1].x - alignPoint[0].x) );//坐标系调整(X方向变成-X方向)
	angle = angle * 180 / CV_PI;
	float m[6];
	cv::Mat M(2,3,CV_32F,m);
	cv::Point center(static_cast<int>(image.cols/2),static_cast<int>(image.rows/2));
	M = cv::getRotationMatrix2D(center,angle,1);
	cv::Mat dstImage(image.size(),image.type());
	cv::warpAffine(image,dstImage,M,image.size());


需要注意的几点:

1、关于double atan(double K)函数

       这个函数的参数是直线的斜率,返回值是角度,其单位为弧度。

2、关于图像坐标与笛卡尔坐标

       图像坐标的X轴对应笛卡尔坐标-X轴,因此在求直线的斜率的时候,应该对X轴方向的差值取反。

3、关于OpenCV函数

Mat getRotationMatrix2D(Point2fcenter, double angle, double scale)
void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int
flags=INTER_LINEAR, intborderMode=BORDER_CONSTANT, const Scalar&
borderValue=Scalar())


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值