s1081540 作業 1

主題:圖像旋轉 (Image Rotation)

作業說明

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

開發環境

  • Windows 10
  • OpenCV 4.2.0
  • Visual Studio 2019
  • C++

程式實作

  1. 使用imread()讀入圖像,再使用empty()判斷圖片是否存在,若圖像讀取失敗會輸出錯誤訊息並結束程式。
  2. 由使用者選擇圖像旋轉方式
    • 輸入 a:旋轉整張圖像
    • 輸入 b:旋轉圖像中心內切圓區域
    • 輸入其他:結束程式
  3. 選擇旋轉整張圖像
    • namedWindow():創建Rotated image視窗
    • createTrackbar():創建 Trackbar
    • getRotationMatrix2D():產生旋轉指定角度影像的仿射矩陣
    • warpAffine():將來源的圖像,根據前面產生的仿射矩陣,獲得仿射轉換後的新圖像
    • imshow():顯示目標圖像
  4. 選擇旋轉圖像中心內切圓區域
    • namedWindow():創建Rotated CR image視窗
    • createTrackbar():創建 Trackbar
    • 將圖像進行圓形切割:創建兩個全黑圖像(image1和image2),在源圖像中畫一個圓,利用for迴圈尋訪每個點,判斷該點是否在圓內,如果是就將該點的資料複製到image1,如果否就將該點的資料複製到image2,最終得到image1為切割成圓形的圖像,而image2為圓形外圍的圖像
    • getRotationMatrix2D():產生旋轉指定角度影像的仿射矩陣
    • warpAffine():將來源的圖像,根據前面產生的仿射矩陣,獲得仿射轉換後的新圖像
    • bitwise_or():將兩張圖片(前面獲得的圖像、image2)做聯集
    • imshow():顯示目標圖像
  5. waitKey(0):透過使用者輸入0來中止程式

執行結果

(a)旋轉整張圖像

(b)旋轉圖像中心內切圓區域

▲   程式執行過程

參考資料:



留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6