s1091521 Homework #1

s1091521 1122 Homework #1 

1122 Digital Image Processing Assignment #1


學號1091521

姓名林哲慶

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

專案目標

        使用Python撰寫一個OpenCV程式,透過選擇設定檔並讀取,依照設定檔案之寬高、圖像檔案讀取一張圖像。而使用者可從介面調整圖像與矩形,選取一個欲擷取之矩形區域,裁切並縮放至指定的大小後儲存成一張新圖像。

開發平台

        Windows 11, Python 3.9.10, OpenCV-Python 4.9.0, Visual Studio Code

功能說明、範例

範例一 & 功能說明

        本次範例使用t1.ini作為輸入,配合範例與截圖介紹功能以及操作。

1. 使用者可以按照p1.執行程式,並選擇輸入檔進行圖片讀取。

p1. 執行程式,並輸入已設定完成的.ini輸入檔檔名

p2. & p3. 整個專案的檔案與結構與.ini輸入檔的格式

輸入檔可由使用者自行設定,可重複利用並增加便利性。


2. 透過輸入檔案讀取完畢後會彈出兩個視窗,p4.為設定視窗,下方為讀取成功並按照指定大小讀取的圖片;p5.則為預覽視窗,再設定視窗所更改的調整都會顯示在這裡。


p4. & p5. 輸入檔t1.ini讀取後的設定視窗以及預覽視窗

3. 以下是設定參數介紹

  • Zoom (25 ~ 100): 預設值為50,最小可以將圖片縮小為1/2大小,最大放大2倍。
  • Rotate (0 ~ 360): 預設值為0,旋轉圖片,不影響選取用之矩形。
  • X (0 ~ 圖片寬度): 設定矩形隻左上座標之X位置。
  • Y (0 ~ 圖片高度): 設定矩形隻左上座標之Y位置。
  • W (0 ~ 圖片寬度): 設定矩形寬度。
  • H (0 ~ 圖片高度): 設定矩形高度。

p6. & p7 用左視窗設定,將綠色矩形調整至選取區塊,可於右側預覽視窗顯示

4. 關閉任一視窗後,會自動將選取區塊儲存成圖片,圖片會在image資料夾內,檔案為cropped_image.jpg。

p8. & p9. p6~p7操作結束後擷取之圖片與圖片位置


範例二

        本次範例使用t2.ini作為輸入,並測試旋轉功能。


p10. 再次執行程式,本次使用t2.ini的輸入檔

p11. & p12. 輸入檔t2.ini讀取後的設定視窗以及預覽視窗

p13. & p14. 本次測試先將圖片旋轉180度,放大成122%,再選取擷取位置

p15. p13~p14操作結束後擷取之圖片


Demo 影片👇


程式架構

        考慮到功能的可延伸性,以及許多參數需重複使用,最後決定將視窗系統本體自製一個類別作使用,包含以下優點:

  1. 不使用global,使程式運作時乾淨。
  2. 參數使用頻率高,如矩形寬度高度與座標和圖片本身,減少函數參數和搬移變數次數。
  3. 使用private(在Python的規則為以__雙底線為開頭的變數/函數名稱)保護重要的資料和函數。
  4. 提升程式碼編輯之便利性,便於未來修復、更新及維護。
        類別會在image_window.py,如p2.,詳見請至上傳至portal的作業報告;
而用於啟動的程式碼會在run_ui.py如下:



這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1081444 Homework #7