s1081523 作業2
作業說明:
主題: 圖像旋轉 (Image Rotation) 撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋 轉 0 度至 359 度):利用一個滑動條(trackbar)控制旋轉角度。
開發環境:
· Windows 10
· Visual Studio 2019
· OpenCV 4.5.5
· C++
實作過程:
1.先利用imread()讀取圖片,並讓使用者輸入旋轉模式(1.全圖片旋轉,2.最大內切圓旋轉)。
2.建立trackbar,並填入全域變數(欲旋轉的角度),並呼叫旋轉函數。
3.若是旋轉全圖片,則先用Point()找出中心點為圖片長度及寬度的一半,並且用getRotationMatrix2D來旋轉想要的角度並用warpAffine將原圖片旋轉後輸出到目標矩陣中。若是旋轉內切圓則一樣找出中心點後,要另外做判定最大內切圓半徑為min(圖片的長度, 圖片的寬度)然後利用高中數學中圓的方程式 (x - x1) ^ 2 + (y - y1) ^ 2 < radius ^ 2 即為圓內,(x1, y1)則是圖片中心點, (x - x1) ^ 2 + (y - y1) ^ 2 > radius ^ 2的點就是圓外。用for迴圈逐點檢查是否在圓內,並將園內的點畫出存在矩陣img1,圓外的點畫出存在img2後呼叫旋轉圖片函數如上,只針對img1旋轉,最後用addWieghted函數將兩矩陣組合輸出到目標視窗。
4.應正常顯示輸出視窗,上有trackbar可以控制旋轉的角度,角度是範圍為0-359之間的整數。
5. 結束程式,關閉圖片顯示視窗。
執行結果:
全圖片旋轉: 逆時針45度
全圖片旋轉: 逆時針235度
沒有留言:
張貼留言