s1101415 Homework #1

 1122 Digital Image Processing Assignment #1 報告


學號:s1101415          姓名:張榆莉

 

主題圖像感興趣區域裁切、旋轉與縮放

 

專案目標:

        使用Opencv函式庫及C++撰寫程式,對指定檔名的圖片進行旋轉、放大後,使用滑鼠拖曳來選擇想要裁切的部分圖片,最後輸出裁切後的圖片。

發環境:Microsoft Windows 10, Visual Studio 2022, OpenCV 4.9.0, C++

程式架構與說明:

1.     使用Console讓使用者輸入想要裁切的檔案名稱(包含附檔名),照片檔案皆會放在”image”資料夾內,讀取失敗時會輸出 ”Can’t find image!” 的訊息。

例:Input Filename: yzu1.jpg

2.     建立兩個Trackbar,分別控制圖片的旋轉及放大功能。我們可以透過拖曳slide來決定想讓圖片旋轉到什麼角度(上限360)和放到多大(最多可放大至兩倍)

   圖片的旋轉是使用getRotationMatrix2D來獲取旋轉矩陣,需傳入的參數為:(圖片中心座標, 旋轉角度, 放大比例),再使用warpAffine函式來做變換,需傳入的參數為:(輸入圖片, 輸出圖片, 轉換矩陣, 輸出圖片大小)

圖片的放大則是使用resize函數來變更圖片的大小。


3.     使用setMouseCallback來偵測滑鼠的動作,onMouse來執行繪製。EVENT_LBUTTONDOWN代表按下滑鼠左鍵,在此時取得接下來要繪製的矩形的起始點左上角。EVENT_LBUTTONUP代表放開滑鼠左鍵,此時先重置圖片並進行旋轉和放大,再繪製矩形。矩形建立時需提供的參數為(左上角x座標, 左上角y座標, 圖片長, 圖片寬)

4.     當使用者選取好想要的圖片範圍,按下空白鍵即會儲存方框範圍內的圖片。儲存完成後就會結束程式的執行,圖片會以 ”crop.jpg” 的檔名存放在專案內。

 成果展示與討論:

 實作影片連結:https://youtu.be/SS3Dvo4AUCE 

 執行範例1不對圖片作任何更動,直接裁切影像。(範例圖片:yzu1.jpg)

 執行範例2將圖片旋轉到想要的角度,再裁切影像。 (範例圖片:yzu2.jpg)


 執行範例3將圖片放大到想要的大小,再裁切影像。 (範例圖片:yzu3.jpg)


 執行範例4同時對圖片進行放大與旋轉,再裁切影像。(範例圖片:yzu1.jpg)





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1