利用OpenCV处理图像的过程中,经常需要旋转图像。在这里我将图像旋转分为2类:90°+180°,任意角度。其中90°和180°有比较简单的调用方式,任意角度则需要自行编写。
废话不多说,上代码。
-90°、90°、180°:
这里需要调用OpenCV的转置(transpose)和翻转(flip)函数。
transpose函数无需多说
flip函数:
void flip(InputArray src, OutputArray dst, int flipCode)
src,输入矩阵
dst,翻转后矩阵,类型与src一致
flipCode,翻转模式,flipCode==0垂直翻转(沿X轴翻转),flipCode>0水平翻转(沿Y轴翻转),flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)
//opencv实现旋转90、-90、180度方法
//顺时针旋转90度-90(transpose+flip0)
img = imread(imgPath);
transpose(img, img);
flip(img, img, 0);
imshow("-90", img);
cvWaitKey();
//逆时针旋转90度+90(transpose+flip1)
img2 = imread(imgPath2);
transpose(img2 , img2 );
flip(img2 , img2 , 1);
imshow("+90", img2 );
cvWaitKey();
//旋转180度
img3 = imread(imgPath3);
flip