OpenCV圖像旋轉(zhuǎn)Rotate的詳細(xì)介紹
功能函數(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);//計(jì)算旋轉(zhuǎn)的仿射變換矩陣 cv::warpAffine(srcImage, dstImage, M, cv::Size(srcImage.cols, srcImage.rows));//仿射變換 }
getRotationMatrix2D函數(shù)原型
getRotationMatrix2D用來(lái)獲得旋轉(zhuǎn)的仿射變換矩陣。
Mat getRotationMatrix2D(Point2f center, double angle, double scale);
getRotationMatrix2D參數(shù)說(shuō)明
- Point2f類(lèi)型的center,旋轉(zhuǎn)中心。
- double類(lèi)型的angle,逆時(shí)針旋轉(zhuǎn)的角度。
- double類(lèi)型的scale,圖像旋轉(zhuǎn)后的尺寸比例。
warpAffine函數(shù)原型
warpAffine用來(lái)仿射變換。
void warpAffine( InputArray src, OutputArray dst, InputArray M, Size dsize, int flags = INTER_LINEAR, int borderMode = BORDER_CONSTANT, const Scalar& borderValue = Scalar());
warpAffine參數(shù)說(shuō)明
- InputArray類(lèi)型的src,輸入圖像。
- OutputArray類(lèi)型的dst,輸出圖像。
- InputArray類(lèi)型的M,仿射變換矩陣。
- Size類(lèi)型的dsize,輸出圖像的大小。
- int類(lèi)型的flags,插值方法。
- int類(lèi)型的borderMode,邊界填充方法。
- const Scalar&類(lèi)型的borderValue,邊界填充數(shù)值。
C++測(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);//計(jì)算旋轉(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; }
測(cè)試效果
圖原圖
圖2 旋轉(zhuǎn)30°
圖3原圖大小旋轉(zhuǎn)45
不難看出,旋轉(zhuǎn)后原圖的尺寸已經(jīng)無(wú)法滿(mǎn)足圖像要求了,此時(shí)可以縮小比例,也可以擴(kuò)展整圖尺寸使其完全覆蓋。
到此這篇關(guān)于OpenCV圖像旋轉(zhuǎn)Rotate的文章就介紹到這了,更多相關(guān)OpenCV圖像旋轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
作者:翟天保Steven
版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處
相關(guān)文章
QT使用canon sdk拍照并保存到本機(jī)的方法示例
這篇文章主要介紹了QT使用canon sdk拍照并保存到本機(jī)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10C語(yǔ)言動(dòng)態(tài)分配二維字符串?dāng)?shù)組的方法
小編最近忙里偷閑,給大家整理一份教程關(guān)于C語(yǔ)言動(dòng)態(tài)分配二維字符串?dāng)?shù)組的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-10-10C++實(shí)現(xiàn)簡(jiǎn)單班級(jí)成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單班級(jí)成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02解決c++?error:crosses?initialization?of?問(wèn)題
最近在寫(xiě)代碼的時(shí)候,碰到了?crosses?initialization?of?...?的問(wèn)題,只因我在?switch?的某個(gè)?case?分支下定義了一個(gè)變量,于是乎便將這個(gè)問(wèn)題整理一下,需要的朋友可以參考下2023-03-03C++ 類(lèi)模板、函數(shù)模板全特化、偏特化的使用
這篇文章主要介紹了C++ 類(lèi)模板、函數(shù)模板全特化、偏特化的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02C語(yǔ)言編程之初識(shí)數(shù)組線(xiàn)性查找和二分查找
本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中數(shù)組的線(xiàn)性查找及二分查找分析講解,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09C++實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)化為后綴表達(dá)式詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C++解決實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式的問(wèn)題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++自帶的sort函數(shù)如何對(duì)vector容器元素進(jìn)行排序
這篇文章主要介紹了C++自帶的sort函數(shù)如何對(duì)vector容器元素進(jìn)行排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10關(guān)于c++編譯protobuf時(shí)提示LNK2001 無(wú)法解析的外部符號(hào)的問(wèn)題
這篇文章主要介紹了關(guān)于c++編譯protobuf時(shí)提示LNK2001 無(wú)法解析的外部符號(hào)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12C++實(shí)現(xiàn)Matlab的zp2tf函數(shù)的示例代碼
matlab?的?zp2tf?函數(shù)的作用是將極點(diǎn)形式的?H(s)?函數(shù)的分母展開(kāi),本文主要為大家介紹了C++實(shí)現(xiàn)Matlab的zp2tf函數(shù)示例代碼,需要的可以參考一下2023-04-04