利用OpenCV的矩阵操作实现图像的逆时针旋转90度操作
- 代码
Mat src = imread("C:\\Users\\fenggl\\Desktop\\测试.jpg",MREAD_UNCHANGED); imshow("原图", src); transpose(src, src); flip(src, src, 0); imshow("逆时针旋转90度", src);
- 效果
- 解释说明
第一步:读入原图
Mat src = imread("C:\\Users\\fenggl\\Desktop\\测试.jpg",MREAD_UNCHANGED);
第二步:矩阵转置
transpose(src, src);
矩阵转置后的的原有的一行变为现有的一列,原有的一列变为现有的一行。
效果图:
第三步:矩阵的翻转(这里其实是对图像的一个镜像)
flip(src, src, 0);
void cv::flip ( InputArray src, OutputArray dst, int flipCode )
这个函数其实是对一个二维的数对进行X轴或者Y轴或者两个轴同时进行翻转(镜像),取决于第三个参数flipcode。
如果flipcode=0,则在X轴上做镜像,如果flipcode=1,则在Y轴上做镜像,如果flipcode=0则在两个轴同时作镜像。
上述代码效果
至此,就实现了逆时针旋转90度了。
同样的如果转置后采取的是Y轴的镜像,也就是flipcode=1时候,就是顺时针旋转90度的效果了。
效果图