c++ - 如何平移旋转的 OpenCV Mat

标签 c++ image opencv rotation

<分区>

我正在编写一些代码,将 OpenCV 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 大小的方法。

示例:Original image旋转到:rotated image

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

最佳答案

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

关于c++ - 如何平移旋转的 OpenCV Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348761/

相关文章:

c++ - Dynamic_cast 兼容性?

c++ - 关于 C++ 中的字符串流

Javascript/JQuery .animate() 不工作

c++ - 使用 "const cv::Mat &"、 "cv::Mat &"、 "cv::Mat"或 "const cv::Mat"作为函数参数的区别?

c++ - 使用 Libtcod,如何控制台->打印具有动态颜色量的字符串?

c++ - 无法将数据插入 SQL Server 数据库 ODBC C++

php图像文件上传并转换为base64而不保存图像

c++ - 在opencv中裁剪旋转图像

python - 使用Python自动裁剪图像

python - spyder无法导入opencv