常常對一幅圖像進行旋轉操做,OpenCV中提供了很方便易用的仿射變換函數warpAffine, 經過getRotationMatrix2D能夠獲得放射變換矩陣(矩陣大小2x3)ios
#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); }
效果函數
原圖spa
旋轉後的圖片code