OpenCV图像旋转

OpenCV实现图像旋转:

double angle = -atan( static_cast(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(image.cols/2),static_cast(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())


 

你可能感兴趣的:(C/C++学习,图像处理,border,image,dst)