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()image1image3拼湊到一起,再應用與(a)模式相同的方法製作滑動條與旋轉功能。 


其他使用函數:

l   imread():讀入圖片

l   imshow():顯示圖片

l   nameWindow():創建視窗

l   setTo():將指定區域設成特定顏色


成果:

l   Mode 1:

  

l   Mode 2:

   

 

展示影片連結:

https://youtu.be/Kme56pWFuUw

 

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1081444 Homework #7