s1082046 作業1

 主題: 圖像旋轉 (Image Rotation)

撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋轉0度至359):利用一個滑動條(trackbar)控制旋轉角度。

一、 開發環境:

  •  Windows 11
  • Visual Studio 2022 C++
  • OpenCV 4.7.0
二、 程式功能:
  • 主程式

Step1: 利用imread() 讀入欲旋轉之圖片

Step2: 計算圖片中心點center(Point2f)和圖片內切圓半徑radius(float)

   

Step3: 輸入a執行case(a)整張圖像旋轉,輸入b則執行case(b)中心內切圓區域旋轉,利用createTrackbar()建立滑動條來控制旋轉角度, namedWindow()新建一個顯示視窗

  • (a)整張圖像旋轉

Step1: getRotationMatrix2D()建立旋轉矩陣

Step2: warpAffine()進行仿射變換

C++: void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, int borderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar())

Step3: imshow()顯示結果



  • (b)中心內切圓區域旋轉
Step1: 利用circle()先做一個白色內切圓遮罩(mask1)


Step2: 利用bitwise_and()讓旋轉圖片(dst)與內切圓遮罩(mask1)AND

Step3: 利用bitwise_not()取得內切圓遮罩外區域(白色),再用bitwise_and()讓原圖(src)與內切圓遮罩外區域AND


Step4: 最後用add()將內切圓與內切外區域合併,並顯示結果



三、 Demo影片:





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1081444 Homework #7