上一篇转载的文章(http://blog.csdn.net/carson2005/article/details/36900161)介绍了图像旋转的原理,这里给出代码实现,具体原理请参考上面的链接;
实现代码:
void ImgRotate(cv::Mat imgIn, float theta, cv::Mat& imgOut)
{
int oldWidth = imgIn.cols;
int oldHeight = imgIn.rows;
// 源图四个角的坐标(以图像中心为坐标系原点)
float fSrcX1,fSrcY1,fSrcX2,fSrcY2,fSrcX3,fSrcY3,fSrcX4,fSrcY4;
fSrcX1 = (float) (- (oldWidth - 1) / 2);
fSrcY1 = (float) ( (oldHeight - 1) / 2);
fSrcX2 = (float) ( (oldWidth - 1) / 2);
fSrcY2 = (float) ( (oldHeight - 1) / 2);
fSrcX3 = (float) (- (oldWidth - 1) / 2);
fSrcY3 = (float) (- (oldHeight - 1) / 2);
fSrcX4 = (float) ( (oldWidth - 1) / 2);
fSrcY4 = (float) (- (oldHeight - 1) / 2);
// 旋转后四个角的坐标(以图像中心为坐标系原点)
float fDstX