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類型的center,旋轉(zhuǎn)中心。
- double類型的angle,逆時(shí)針旋轉(zhuǎn)的角度。
- double類型的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類型的src,輸入圖像。
- OutputArray類型的dst,輸出圖像。
- InputArray類型的M,仿射變換矩陣。
- Size類型的dsize,輸出圖像的大小。
- int類型的flags,插值方法。
- int類型的borderMode,邊界填充方法。
- const Scalar&類型的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ú)法滿足圖像要求了,此時(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)文章
C語(yǔ)言實(shí)現(xiàn)電話簿項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電話簿項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C語(yǔ)言實(shí)現(xiàn)計(jì)算樹的深度的方法
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)計(jì)算樹的深度的方法,針對(duì)數(shù)據(jù)結(jié)構(gòu)中樹進(jìn)行操作的方法,在算法設(shè)計(jì)中比較常見(jiàn),需要的朋友可以參考下2014-09-09
C++實(shí)現(xiàn)職工工資管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單的職工工資管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C/C++內(nèi)存泄漏原因分析與應(yīng)對(duì)方法
內(nèi)存泄漏會(huì)導(dǎo)致當(dāng)前應(yīng)用程序消耗更多的內(nèi)存,使得其他應(yīng)用程序可用的內(nèi)存更少了,那么為什么會(huì)內(nèi)存泄漏,我們應(yīng)該怎樣應(yīng)對(duì)內(nèi)存泄漏,所以接下來(lái)就給大家詳細(xì)介紹一下C++內(nèi)存泄漏原因分析與應(yīng)對(duì)方法,需要的朋友可以參考下2023-07-07
C++實(shí)現(xiàn)PatchMatch圖像修復(fù)算法
這篇文章主要介紹了C++實(shí)現(xiàn)PatchMatch圖像修復(fù)算法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04

