影象旋轉 OpenCV實現
阿新 • • 發佈:2018-11-03
轉自:https://www.cnblogs.com/willwu/p/6133696.html
經常對一幅影象進行旋轉操作,OpenCV中提供了很方便易用的仿射變換函式warpAffine, 通過getRotationMatrix2D可以得到放射變換矩陣(矩陣大小2x3)
#include <iostream> #include <opencv.hpp> using namespace std; int main(void){ cv::Mat src = cv::imread("test.png"); cv::imshow("src", src); double angle = -45; cv::Point2f center(src.cols / 2, src.rows / 2); cv::Mat rot = cv::getRotationMatrix2D(center, angle, 1); cv::Rect bbox = cv::RotatedRect(center, src.size(), angle).boundingRect(); rot.at<double>(0, 2) += bbox.width / 2.0 - center.x; rot.at<double>(1, 2) += bbox.height / 2.0 - center.y; cv::Mat dst; cv::warpAffine(src, dst, rot, bbox.size()); cv::imshow("dst", dst); cv::waitKey(0); }
效果
原圖
旋轉後的圖片