我想旋转图像,但不裁剪就无法获得旋转图像
我的原图:
现在我使用这段代码:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
// Compile with g++ code.cpp -lopencv_core -lopencv_highgui -lopencv_imgproc
int main()
{
cv::Mat src = cv::imread("im.png", CV_LOAD_IMAGE_UNCHANGED);
cv::Mat dst;
cv::Point2f pc(src.cols/2., src.rows/2.);
cv::Mat r = cv::getRotationMatrix2D(pc, -45, 1.0);
cv::warpAffine(src, dst, r, src.size()); // what size I should use?
cv::imwrite("rotated_im.png", dst);
return 0;
}
并获得如下图像:
但我想得到这个:
原文由 Manuel Ignacio López Quintero 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的回答受到以下帖子/博客条目的启发:
主要观点:
cv::RotatedRect
尽可能依赖现有的opencv功能使用 opencv 3.4.1 测试的代码: