OpenCV圖像旋轉(zhuǎn)Rotate的詳細介紹
功能函數(shù)
// 圖像旋轉(zhuǎn) void Rotate(const cv::Mat &srcImage, cv::Mat &dstImage, double angle, cv::Point2f center, double scale) { cv::Mat M = cv::getRotationMatrix2D(center, angle, scale);//計算旋轉(zhuǎn)的仿射變換矩陣 cv::warpAffine(srcImage, dstImage, M, cv::Size(srcImage.cols, srcImage.rows));//仿射變換 }
getRotationMatrix2D函數(shù)原型
getRotationMatrix2D用來獲得旋轉(zhuǎn)的仿射變換矩陣。
Mat getRotationMatrix2D(Point2f center, double angle, double scale);
getRotationMatrix2D參數(shù)說明
- Point2f類型的center,旋轉(zhuǎn)中心。
- double類型的angle,逆時針旋轉(zhuǎn)的角度。
- double類型的scale,圖像旋轉(zhuǎn)后的尺寸比例。
warpAffine函數(shù)原型
warpAffine用來仿射變換。
void warpAffine( InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, const Scalar& borderValue = Scalar());
warpAffine參數(shù)說明
- InputArray類型的src,輸入圖像。
- OutputArray類型的dst,輸出圖像。
- InputArray類型的M,仿射變換矩陣。
- Size類型的dsize,輸出圖像的大小。
- int類型的flags,插值方法。
- int類型的borderMode,邊界填充方法。
- const Scalar&類型的borderValue,邊界填充數(shù)值。
C++測試代碼
#include <iostream> #include <opencv.hpp> using namespace std; using namespace cv; // 圖像旋轉(zhuǎn) void Rotate(const cv::Mat &srcImage, cv::Mat &dstImage, double angle, cv::Point2f center, double scale) { cv::Mat M = cv::getRotationMatrix2D(center, angle, scale);//計算旋轉(zhuǎn)的仿射變換矩陣 cv::warpAffine(srcImage, dstImage, M, cv::Size(srcImage.cols, srcImage.rows));//仿射變換 } int main() { // 載入圖像 cv::Mat src = imread("0.jpg"); cv::Mat dst; // 定義參數(shù) int row = src.rows; int col = src.cols; double angle = 30; cv::Point2f center(col / 2, row / 2); double scale = 0.5; // 圖像旋轉(zhuǎn) Rotate(src, dst, angle, center, scale); // 顯示圖像 imshow("src", src); imshow("result", dst); waitKey(0); system("pause"); return 0; }
測試效果
圖原圖
圖2 旋轉(zhuǎn)30°
圖3原圖大小旋轉(zhuǎn)45
不難看出,旋轉(zhuǎn)后原圖的尺寸已經(jīng)無法滿足圖像要求了,此時可以縮小比例,也可以擴展整圖尺寸使其完全覆蓋。
到此這篇關(guān)于OpenCV圖像旋轉(zhuǎn)Rotate的文章就介紹到這了,更多相關(guān)OpenCV圖像旋轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
作者:翟天保Steven
版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處