s1091541 作業1
Assignment #1
主題: 圖像旋轉 (Image Rotation)
撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋轉 0 度至 359 度):利用一個滑動條(trackbar)控制旋轉角度。
開發環境:
l Windows 11
l Visual Studio 2022 C++
l Open CV 4.7.0
程式碼說明:
Mode 1為旋轉整張圖像,Mode 2為旋轉圖像中的內切圓。需輸入1或是2方可開始展示。
(a)旋轉整張圖像:
1. 利用createTrackbar()製作滑動條,設定滑動條以及視窗的名字(angle,window)、滑動條控制的數值範圍(&angle(預設為0)~360)跟負責完成旋轉功能的function(rotate())。
2. 使用getRotationMatrix2D()計算旋轉二維矩陣,參數為圖像中央座標、旋轉角度及縮放比例。
3. warpAffine()旋轉圖片
(b)旋轉圖像中的內切圓:
此部分採用不同的mask來分別製作中心內切圓圖像與外框圖像後再進行拼湊。
1. 使用zeros(image.size(),image.type())製造出一個與圖片大小相同的黑色背景(圖(一))。
2.使用circle(mask, center, radius, Scalar(255, 255, 255), -1)在黑色圖像中間畫出白色內切圓 (radius=170)生成遮罩(mask)(圖(二))。


圖(一) 圖(二)
3.使用copyTo()將原圖套上遮罩生成內切圓圖形(image1)(圖(三))。
4.使用bitwise_not()將遮罩反轉,生成外框白色內切圓黑色的遮罩(mask_inv)(圖(四))。
圖(三) 圖(四)
5.使用copyTo()將原圖套上遮罩生成外框圖像(image3)(圖(五))。
圖(五)
6.利用add()將image1跟image3拼湊到一起,再應用與(a)模式相同的方法製作滑動條與旋轉功能。
其他使用函數:
l imread():讀入圖片
l imshow():顯示圖片
l nameWindow():創建視窗
l setTo():將指定區域設成特定顏色
成果:
l Mode 1:
l Mode 2:
展示影片連結:
留言
張貼留言