s1093340 作業1

 一、作業說明

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


 二、開發環境

OS: Windows 11
Editor: Visual Studio Code
Compiler: GCC-12.2.0(MinGW-W64)
Language: C++
Package: OpenCV-4.6.0 

 三、程式功能

  1. 執行方式
    • 使用argv將要旋轉之圖片路徑傳入,可使用cmd執行或者直接將圖片拖曳至exe檔上面執行
      拖曳圖片執行
      使用cmd執行
  2. 選擇旋轉模式
    1. Full image:整張圖像旋轉
    2. Circle image:中心內切圓區域旋轉
      選擇旋轉模式

  3. 調整旋轉角度
    • 拖曳上方trackbar調整要選轉的角度
      透過trackbar旋轉圖片
  4. 結束程式
    • 要離開程式時,使用鍵盤上的Esc就可結束執行

 四、實作過程

  1. 整張圖像旋轉
    1. 圖片長及寬除二,計算出圖片中心點座標
    2. 使用getRotationMatrix2D建立一個以中心點旋轉的旋轉矩陣
    3. 使用warpAffine對原始圖片進行旋轉變換
      執行成果
  2. 中心內切圓區域旋轉
    1. 圖片長及寬除二,計算出圖片中心點座標
    2. 使用較短的邊長除二算出內切圓半徑
    3. 依照內切圓大小建立一個遮罩
      內切圓大小的遮罩
    4. 使用bitwise_and依照遮罩將內切圓圖片從原圖上取出
      取出的內切圓圖片
    5. 使用getRotationMatrix2D及warpAffine將內切圓進行旋轉
    6. bitwise_not將遮罩相反
      相反過後的遮罩
    7. 使用bitwise_and依照遮罩將內切圓外部的圖像與內切圓結合
      執行成果

五、demo影片

影片網址:https://youtu.be/OuJKA3Mdw8c



留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6