s1093350 Homework #1

1122 Digital Image Processing Assignment #1報告


學號:s1093350    姓名:楊宜芳 

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

問題與專案解決目標: 

我們在處理影像時,可能會面臨拍攝時不小心歪斜,或者只想保留部分影像等問題。為了解決以上問題,利用 Python OpenCV 撰寫一程式,讓使用者讀取一張圖片,並輸入目標圖片的寬與高。接著,再於視窗上進行圖片的縮放、旋轉以及裁切區域的選擇,並儲存為一張新的圖片。 

開發環境:Microsoft Windows 11, Visual Studio Code 1.87.1, OpenCV 4.90, Python 3.8.13

程式架構與功能說明: 

1. 使用者在 Conslole 輸入原始圖片的檔案名稱以及目標圖片的寬與高,範例如下(藍色字體為使用者自行輸入值):

§   input image filename: yzu1.png 

§   target image Width: 600 

§   target image Hidth: 400 

程式碼及註解如下圖。



2. 讀取圖片,並建立視窗預覽原始圖片。視窗上設置 Trackbar,讓使用者能透過 Trackbar 來調整圖片的縮放比例、旋轉角度、裁切區域位置與儲存檔案。Trackbar 的名稱及功能如下。

§   Zoom:縮放比例(0%200%

§   Rotate:旋轉角度(360°

§   iniX:裁切區域左上點的 x 座標(0-原始圖片寬)

§   iniY:裁切區域左上點的 y 座標(0-原始圖片高)

§   SaveFile:儲存檔案 

程式碼及註解如下圖。


Trackbar改動時不會執行動作,設置nothing函數,不執行任何動作,如下圖。


3.  取得各Trackbar的值,根據取得的值產生圖片的變換矩陣,並利用變換矩陣產生使用者調整過後的圖片。接著,根據使用者設定的裁切區域位置,於調整過後的圖片上繪製裁切區域的範圍,並於另一視窗顯示結果。程式碼及註解如下圖。


4. 使用者若將 SaveFile Trackbar 值設為1,即可將調整過後的影像儲存為新圖片。程式碼及註解如下圖。


5. 在視窗顯示時,按q鍵即可退出程式。而若讀取圖片失敗或用其他方法關閉視窗,會顯示”Please try again”訊息。程式碼及註解如下圖。


數學運算:

Zoom(縮放比例)的 Trackbar 值設為0%200%,但在 cv2.getRotationMatrix2D() 中,1為等比例縮放,因此將 zoom 的值除以100。如下圖。


變換矩陣中的參數分別為(變換的中心點, 旋轉角度, 縮放比例)。將中心點設為圖片的中點,因此中心點座標為(圖片的寬/2, 圖片的高/2)。如下圖。



成果展示與討論:

1. 執行範例一:

使用者輸入檔名”yzu1.jpg”、目標寬度600及目標高度400。如下圖。


使用者在 imgWindow 中可看到輸入的圖片,利用Trackbar調整圖片的縮放比例、旋轉角度與裁切位置,並顯示於 newWindow中。如下圖。


使用者將 SaveFile TrackBar 值設為1,即可儲存調整後的圖片,如下圖,得到600*400像素的新圖片。


2. 執行範例二:

使用者輸入檔名”yzu3.jpg”、目標寬度1200及目標高度2400。如下圖。


使用者在 imgWindow 中可看到輸入的圖片,利用 Trackbar 調整圖片的縮放比例、旋轉角度與裁切位置,並顯示於 newWindow中。如下圖。


使用者將 SaveFile TrackBar 值設為1,即可儲存調整後的圖片,如下圖,得到1200*2400像素的新圖片。

成果影片:

影片連結https://youtu.be/XpKf-DFQfPs



留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6