對 OpenCV 中 getRotationMatrix2D 函數(shù)和仿射變換的一點理解

  • getRotationMatrix2D()
    這個函數(shù)給定一個旋轉(zhuǎn)中心點的坐標(biāo)摸屠、旋轉(zhuǎn)角度和縮放因子,返回一個仿射變換矩陣 M缎除,不考慮縮放因子的話其形式大概如下:
    M = \begin{bmatrix} cos\theta&sin\theta&dx \\ -sin\theta&cos\theta&dy\end{bmatrix}
    逆時針旋轉(zhuǎn) \theta 取正值,反之為負(fù)值乓诽。如果繞坐標(biāo)原點旋轉(zhuǎn)泉瞻,那么 dx,dy=0莽囤,如果旋轉(zhuǎn)中心點不在原點,那么則要通過 dx,dy 的值對旋轉(zhuǎn)后的坐標(biāo)進(jìn)行調(diào)整房官。

紅色框是旋轉(zhuǎn)前的圖像 src_img趾徽,寬和高分別為 h 和 w,黑色框是逆時針旋轉(zhuǎn) \theta 后的圖像 dst_img翰守「浇希可以看到,如果旋轉(zhuǎn)后圖像的寬和高保持不變潦俺,那么肯定會有一部分圖片會被裁掉拒课。而如果想要保證旋轉(zhuǎn)后圖片的所有像素都保留下來,那么新圖像就必須至少為淺藍(lán)色框這么大事示。易知早像,新圖像的寬和高至少為:
w_1=w*cos\theta+h*sin\theta
h_1=w*sin\theta+h*cos\theta

同時,由于我們是繞著原來圖像的中心點進(jìn)行旋轉(zhuǎn)的肖爵,而旋轉(zhuǎn)后圖像的中心點(w_1/2,h_1/2)離原圖像中心點(w/2,h/2)有偏移卢鹦,所以我們需要將旋轉(zhuǎn)后的坐標(biāo)調(diào)整到以旋轉(zhuǎn)后圖像的中心點為基準(zhǔn)。

dx=dx+w_1/2-w/2
dy=dy+h_1/2-h/2

import numpy as np
import cv2

img = cv2.imread(r'C:\Users\21058\Downloads\a.jpg')
img = cv2.resize(img, (512, 512))
h, w = img.shape[:2]
angle = 30
M = cv2.getRotationMatrix2D((w//2, h//2), angle, 1.0)
angle = angle / 180 * np.pi # 轉(zhuǎn)化為弧度制
h1 = int(w * np.sin(angle) + h * np.cos(angle))
w1 = int(w * np.cos(angle) + h * np.sin(angle))
M[0, 2] += (w1 - w) / 2
M[1, 2] += (h1 - h) / 2
rotate_img = cv2.warpAffine(img, M, (w1, h1))
cv2.imshow('img', img)
cv2.imshow('rotate_img', rotate_img)
cv2.waitKey(0)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冀自,隨后出現(xiàn)的幾起案子揉稚,更是在濱河造成了極大的恐慌,老刑警劉巖熬粗,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搀玖,死亡現(xiàn)場離奇詭異,居然都是意外死亡驻呐,警方通過查閱死者的電腦和手機灌诅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來含末,“玉大人猜拾,你說我怎么就攤上這事∮逗校” “怎么了挎袜?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肥惭。 經(jīng)常有香客問我盯仪,道長,這世上最難降的妖魔是什么务豺? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任磨总,我火速辦了婚禮,結(jié)果婚禮上笼沥,老公的妹妹穿的比我還像新娘蚪燕。我一直安慰自己,他們只是感情好奔浅,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布馆纳。 她就那樣靜靜地躺著,像睡著了一般汹桦。 火紅的嫁衣襯著肌膚如雪鲁驶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天舞骆,我揣著相機與錄音钥弯,去河邊找鬼。 笑死督禽,一個胖子當(dāng)著我的面吹牛脆霎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狈惫,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼睛蛛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忆肾,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤荸频,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后客冈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旭从,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年郊酒,在試婚紗的時候發(fā)現(xiàn)自己被綠了遇绞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片键袱。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡燎窘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹄咖,到底是詐尸還是另有隱情褐健,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布澜汤,位于F島的核電站蚜迅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏俊抵。R本人自食惡果不足惜谁不,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徽诲。 院中可真熱鬧刹帕,春花似錦、人聲如沸谎替。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钱贯。三九已至挫掏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秩命,已是汗流浹背尉共。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弃锐,地道東北人袄友。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像拿愧,于是被迫代替她去往敵國和親杠河。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容