getRotationMatrix2D函數
主要用於得到圖像繞着 某一點的旋轉矩陣
Mat getRotationMatrix2D(Point2f center, double angle, double scale)
參數詳解:
Point2f center:表示旋轉的中心點
double angle:表示旋轉的角度
double scale:圖像縮放因子
opencv代碼:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h> using namespace cv; using namespace std; /// 全局變量 char* source_window = "Source image"; char* warp_window = "Warp"; char* warp_rotate_window = "Warp + Rotate"; /** @function main */ int main( int argc, char** argv ) { Point2f srcTri[3]; Point2f dstTri[3]; Mat rot_mat( 2, 3, CV_32FC1 ); Mat warp_mat( 2, 3, CV_32FC1 ); Mat src, warp_dst, warp_rotate_dst; /// 加載源圖像 src = imread( argv[1], 1 ); /// 設置目標圖像的大小和類型與源圖像一致 warp_dst = Mat::zeros( src.rows, src.cols, src.type() ); /// 設置源圖像和目標圖像上的三組點以計算仿射變換 srcTri[0] = Point2f( 0,0 ); srcTri[1] = Point2f( src.cols - 1, 0 ); srcTri[2] = Point2f( 0, src.rows - 1 ); dstTri[0] = Point2f( src.cols*0.0, src.rows*0.33 ); dstTri[1] = Point2f( src.cols*0.85, src.rows*0.25 ); dstTri[2] = Point2f( src.cols*0.15, src.rows*0.7 ); /// 求得仿射變換 warp_mat = getAffineTransform( srcTri, dstTri ); /// 對源圖像應用上面求得的仿射變換 warpAffine( src, warp_dst, warp_mat, warp_dst.size() ); /** 對圖像扭曲後再旋轉 */ /// 計算繞圖像中點順時針旋轉50度縮放因子爲0.6的旋轉矩陣 Point center = Point( warp_dst.cols/2, warp_dst.