s1101327 Homework #1

 

1122 Digital Image Processing Assignment #1 報告

學號:1101327   姓名:柯翔崴

主題資料夾內多圖像區域裁切

專案目標:

為了讓使用者在選取圖像上和在修改多張圖像上更為方便,撰寫一個OpenCV、搭配Tkinter的程式讀取資料夾內多張圖像,並利用滑鼠左鍵和右鍵來達到不同功能的選取目標區塊效果。可以按下鍵盤上的S儲存成一張裁切為指定大小的新圖像,作為網頁設計的圖片素材。同時藉由鍵盤上的AD來達到讀取上一張和下一張的效果,按下ESC則退出程式。

 

開發平台:Microsoft Windows 10, Visual Studio Code, OpenCV 4.9.0, tk 0.1.0, numpy 1.16.4, Python 3.9.18

 

程式架構與功能說明:

Assignment1資料夾內含有codeimageres等資料夾,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

留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6