如何平移旋转的OpenCV材质

How to translate a rotated OpenCV Mat

本文关键字:OpenCV 材质 旋转 何平      更新时间:2023-10-16

我正在编写一些代码,将OpenCV Mat旋转指定角度。使用以下代码,我已经成功地将Mat绕其中心旋转,但由于图像不是正方形,旋转图像的中心不是新图像的中心,并且图像的一部分落在新Mat之外。

Point2f src_center(source.cols/2.0F, source.rows/2.0F);
Mat rot_mat = getRotationMatrix2D(src_center, angle, 1.0);
Mat final;
final.create(calculateHeight(source.cols, source.rows, angle), calculateWidth(source.cols, source.rows, angle), CV_32FC1);
warpAffine(source, final, rot_mat, final.size());

注意:calculateHeight和calculateWidth是简单地根据原始Mat的尺寸和旋转角度来确定新Mat的大小的方法。

示例:原始图像旋转到:旋转图像

如何旋转Mat,使旋转后的Mat在边界内居中?

只需将要旋转的图像复制到足够大的新图像的中心,然后旋转新图像。