[s1101405 Homework #1]

  1122 Digital Image Processing Assignment #1 報告


學號:s1101405                        姓名:蔡芷琳

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

專案目標:

    撰寫一個OpenCV程式,讀取一張圖像以preview window顯示,接著使用者可以輸入感興趣的矩形大小,並利用trackbarzoomrotate以及移動矩形左上角座標的功能在select window中將矩形移動到指定區域,再利用saveFile的功能將圖像保存成新的檔案。


共有三個測試影像檔,分別是yzu1.jpgyzu2.jpgyzu3.jpg



開發平台:Microsoft Windows 11, Visual Studio Code, OpenCV 4.9.0, Python 3.12.2

程式架構與功能說明:

1. 讓使用者可以輸入來源圖片檔案、目標圖片的長寬。








2. 可以讀取trackbariniXiniYvalselect window中畫出目標圖片的矩形框,並且讀取trackbarzoomrotateval進行縮放及旋轉。







3.創造zoomtrackbar以及預設在50,利用zoom_factor換算完當下的val後呼叫draw_rectangle進行縮放。

Zoom_factor的換算的方式是(val-50)是將數值以50為中心做平移,/50後得到的結果範圍在-1~1之間,再+1讓結果平移到1~2之間,作為縮放的比例。







cv.createTrackbar("zoom","preview window", 50, 100, zoom)

會將名為zoomtrackbar創建在preview window之中,初始值是50,最大值是100,當zoom這個trackbar被操作的時候呼叫zoom這個函式來處理。

 

4. 創造iniXiniYtrackbar以及預設在0,利用xPosyPos來得知當下的val後呼叫draw_rectangle進行畫新的矩形來移動。










5. 創造rotatetrackbar以及預設在0,利用degree來得知當下的val後呼叫draw_rectangle進行旋轉。



 




6. 創造saveFiletrackbar以及預設在0,利用xywh來的知xy的座標,以及目標圖片的長寬,然後利用crop_img來儲存從rotated_img擷取下來的特定矩形框的圖片,再用cv.imwrite將擷取下來的圖片檔存進名為crop.jpg的檔案。



 






成果展示與討論: 

執行範例一:






 

執行範例二:






 

執行範例三:



 

執行範例四:



留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1091537 Homework #1