s1101327 Homework #1
1122 Digital Image Processing Assignment #1 報告
學號:1101327 姓名:柯翔崴
主題:資料夾內多圖像區域裁切
專案目標:
為了讓使用者在選取圖像上和在修改多張圖像上更為方便,撰寫一個OpenCV、搭配Tkinter的程式讀取資料夾內多張圖像,並利用滑鼠左鍵和右鍵來達到不同功能的選取目標區塊效果。可以按下鍵盤上的S儲存成一張裁切為指定大小的新圖像,作為網頁設計的圖片素材。同時藉由鍵盤上的A和D來達到讀取上一張和下一張的效果,按下ESC則退出程式。
開發平台:Microsoft Windows 10, Visual Studio Code, OpenCV 4.9.0, tk 0.1.0, numpy
1.16.4, Python 3.9.18
程式架構與功能說明:
Assignment1資料夾內含有code、image、res等資料夾,code為存放此專案的程式碼(main.py);image內放入所有想處理的圖像檔;res為存放裁切後的圖像檔。
執行前可以先在預設好的環境內輸入“pip install -r
requirements.txt” 載入此專案所需要的package。
main.py內含有一個類別,在宣告window物件時,會同時初始化以下資訊。
接著,透過自訂的select_dir()開啟檔案對話框,讓使用者選擇預想讀取的資料夾,該資料夾內包含了所有要處理的圖像檔案(png, jpg,
jpeg格式),然後程式會要求使用者輸入目標矩形的寬度和高度,並判斷該圖像是否有超過1024*768的大小,若超出此範圍則縮放為1024*768的大小並呈現出來。run(): 執行並讀取此檔案內所有的圖片檔;select_dir(): 選擇預想讀取的資料夾並回傳其路徑;select_img_file(): 會回傳所有的圖像檔名和圖像路徑;resize_image(): 調整圖像大小(以1024*768作為判斷);selec_region(): 提供兩種功能的目標圖像擷取功能,並提供鍵盤S: 儲存檔案在特定資料夾下 A: 編輯上一張圖片 D: 編輯下一張圖片的功能。
成果展示與討論:
首先,程式會打開一個檔案對話框,讓使用者選擇要讀取的資料夾,並要求使用者輸入目標圖像的長度和寬度。
接者使用者可以利用滑鼠左鍵和右鍵進行目標圖像的選取。左鍵: 可藉由拖拉的形式框選自訂大小的矩形區域;右鍵: 藉由點擊右鍵產生使用者最初設置的目標矩形;再透過鍵盤的S來將選取後的目標圖像儲存到res資料中。
左鍵 |
右鍵 |
最後要編輯其他張資料夾內的圖像則可以點擊A: 上一張 D: 下一張圖像來進行多圖像的編輯(yzu3.jpg下一張為yzu1.jpg)。
面臨的問題:
在進行trackbar的應用時,遭遇了ㄧ些問題。
1.
與cv2.setMouseCallback()當中的畫布起衝突,在更新圖像時經常會有圖像異常的現象
2.
未注意self.img 的使用,應保留原始圖像
因時間因素還未修改以下code,未來目標為實施以下程式。
影片連結:https://drive.google.com/drive/folders/1ZTBFeqh5GpoCNei7_I-k-DzQZgXTDLnh?usp=drive_link
留言
張貼留言