s1081540 作業 1
主題:圖像旋轉 (Image Rotation)
作業說明
撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋轉 0 度至 359 度):利用一個滑動條(trackbar)控制旋轉角度。
開發環境
- Windows 10
- OpenCV 4.2.0
- Visual Studio 2019
- C++
程式實作
- 使用imread()讀入圖像,再使用empty()判斷圖片是否存在,若圖像讀取失敗會輸出錯誤訊息並結束程式。
- 由使用者選擇圖像旋轉方式
- 輸入 a:旋轉整張圖像
- 輸入 b:旋轉圖像中心內切圓區域
- 輸入其他:結束程式
- 選擇旋轉整張圖像
- namedWindow():創建Rotated image視窗
- createTrackbar():創建 Trackbar
- getRotationMatrix2D():產生旋轉指定角度影像的仿射矩陣
- warpAffine():將來源的圖像,根據前面產生的仿射矩陣,獲得仿射轉換後的新圖像
- imshow():顯示目標圖像
- 選擇旋轉圖像中心內切圓區域
- namedWindow():創建Rotated CR image視窗
- createTrackbar():創建 Trackbar
- 將圖像進行圓形切割:創建兩個全黑圖像(image1和image2),在源圖像中畫一個圓,利用for迴圈尋訪每個點,判斷該點是否在圓內,如果是就將該點的資料複製到image1,如果否就將該點的資料複製到image2,最終得到image1為切割成圓形的圖像,而image2為圓形外圍的圖像
- getRotationMatrix2D():產生旋轉指定角度影像的仿射矩陣
- warpAffine():將來源的圖像,根據前面產生的仿射矩陣,獲得仿射轉換後的新圖像
- bitwise_or():將兩張圖片(前面獲得的圖像、image2)做聯集
- imshow():顯示目標圖像
- waitKey(0):透過使用者輸入0來中止程式
執行結果
![]() |
(a)旋轉整張圖像 |
![]() |
(b)旋轉圖像中心內切圓區域 |
▲ 程式執行過程
參考資料:
- Adding a Trackbar to our applications! - OpenCV:https://docs.opencv.org/3.4/da/d6a/tutorial_trackbar.html
- OpenCV实践之路——圆形切割和矩形切割 - CSDN博客:https://blog.csdn.net/xingchenbingbuyu/article/details/50719569
留言
張貼留言