opencv 旋转图片不剪切

旋转矩形

double angle = -45;
cv::Point2d rot_center(w,h);
cv::RotatedRect rRect = cv::RotatedRect(rot_center, cv::Size(w,h), angle);
cv::Point2f vertices[4];
rRect.points(vertices);

 

旋转图像

 

cv::Mat src;
cv::Point2f center((src.cols - 1) / 2.0, (src.rows - 1) / 2.0);
cv::Mat rot = cv::getRotationMatrix2D(center, angle, 1.0);
cv::Rect2f bbox = cv::RotatedRect(cv::Point2f(), src.size(), angle).boundingRect2f();
rot.at<double>(0, 2) += bbox.width / 2.0 - src.cols / 2.0;
rot.at<double>(1, 2) += bbox.height / 2.0 - src.rows / 2.0;
cv::Mat dist;
cv::warpAffine(src, dist, rot, bbox.size());

 

posted @ 2022-09-21 20:40  好问雷  阅读(62)  评论(0编辑  收藏  举报