一般角度旋转,我们会这样做:
先用getRotationMatrix2D()来计算二维旋转变换矩阵,
再用warpAffine()来进行仿射变换
对于需90°或-90°旋转,如果我们也这样做:
Mat src = imread("E:/TestImg/t1.jpg");
Mat dst;
Point center(src.cols/2,src.rows/2); //旋转中心
double angle = -90.0; //角度
double scale = 1.0; //缩放系数
Mat rotMat = getRotationMatrix2D(center,angle,scale);
warpAffine(src,dst,rotMat,src.size());
imshow("src",src);
imshow("dst",dst);
waitKey();
结果(左边原图,右图结果图):
可以看到,左右有多余的黑边,而且上边的一些字也没有了
分析可能是旋转后和原图长宽不一致造成的,于是改代码,将结果图片长宽对换: