s1093306 作業1
一.作業說明
撰寫一個程式將一張圖像的
- (a)整張圖像,旋轉一個角度(逆時針旋 轉 0 度至 359 度):利用一個滑動條(trackbar)控制旋轉角度
- (b)中心內切圓區域,旋轉一個角度(逆時針旋 轉 0 度至 359 度):利用一個滑動條(trackbar)控制旋轉角度
二.開發環境
- 作業系統: Windows10
- 編譯器: Visual Studio 2019
- 程式語言: C++
- OpenCV版本: 4.7.0
分成三個部分,分別1.實作旋轉整張圖片、2.旋轉中心圓以及3.主程式選擇旋轉圖片模式。
0.先將參數和圖片讀取(imread())先設定好等等會用:
//mode 切換模式用
使用getRotationMatrix2D(圖中心點,角度,圖片比例大小)來建立旋轉矩陣,然後圖片在旋轉過後會有地方被裁掉=>用warpAffine()函式處理warpAffine(輸入圖,輸出圖,第三個參數為變化後的圖片大小)
//warpAffine參考網站: https://docs.opencv.org/3.4/d4/d61/tutorial_warp_affine.html
2.旋轉中心圓(Rotate_circleheart_img):
建立一個 img_mask矩陣並用zeros將項數值都歸0(全黑)等等用來處理中心圓的像素
,如圖1
圖1
使用opcv circle圓型的函式, circle(選擇的圖,中心點,半徑,顏色(顏色沒差之後會覆蓋掉),這裡設為-1,表示這是一個實點),如圖2
//圓型的函式參考網站:https://www.cnblogs.com/skyfsm/p/6897313.html
圖2
用copyTo()函示不花記憶體空間 將圖像(img)複製到圖(img_mask)大小上,如圖3
//參考網頁: https://openweather.blogspot.com/2019/09/opencv-clonecopyto-opencvclonecopyto.html
然後跟1.一樣計算一個旋轉矩陣getRotationMatrix2D(img_center, angle, 1.0);
用warpAffine()函式處理img_rotated_mask得到旋轉後的圖,如圖4
3.主程式:用mode調整輸出成品
namedWindow建立視窗然後用createTrackbar為(a)、(b)兩題建立旋轉角度的滑條,另外幫(b)建立可以調整半徑的滑條
//createTrackbar參考https://steam.oxxostudio.tw/category/python/ai/opencv-trackbar.html
四.實作影片
(a):旋轉整張圖片
(b):旋轉中心圓
留言
張貼留言