关于下面两个主要函数的讲解:
1 cv::getRotationMatrix2D(center, angle, scale); 2 cv::warpAffine(image, rotateImg, rotateMat, image.size());
下面这份代码用于实现对图像的缩放与旋转。
OpenCV版本:2.4.2
1 [cpp] view plaincopy 2 // 图像旋转与缩放 3 // Author: www.icvpr.com 4 // Blog: http://blog.csdn.net/icvpr 5 6 #include <iostream> 7 #include <vector> 8 #include <opencv2/opencv.hpp> 9 10 int main(int argc, char** argv) 11 { 12 13 cv::Mat image = cv::imread("../test.jpg"); 14 if (image.empty()) 15 { 16 std::cout<<"read image failure"<<std::endl; 17 return -1; 18 } 19 20 cv::Point2f center = cv::Point2f(image.cols / 2, image.rows / 2); // 旋转中心 21 double angle = 30; // 旋转角度 22 double scale = 0.5; // 缩放尺度 23 24 cv::Mat rotateMat; 25 rotateMat = cv::getRotationMatrix2D(center, angle, scale); 26 27 cv::Mat rotateImg; 28 cv::warpAffine(image, rotateImg, rotateMat, image.size()); 29 30 cv::imwrite("../rotate.jpg", rotateImg); 31 32 33 return 0; 34 }
原图:
缩放:
旋转:
旋转+缩放