[s1101405 Homework #1]
1122 Digital Image Processing Assignment #1 報告
學號:s1101405                        姓名:蔡芷琳
主題: 圖像感興趣區域裁切、旋轉與縮放
專案目標:
    撰寫一個OpenCV程式,讀取一張圖像以preview window顯示,接著使用者可以輸入感興趣的矩形大小,並利用trackbar的zoom、rotate以及移動矩形左上角座標的功能在select window中將矩形移動到指定區域,再利用saveFile的功能將圖像保存成新的檔案。
開發平台:Microsoft Windows 11, Visual Studio Code, OpenCV 4.9.0, Python 3.12.2
程式架構與功能說明:
1. 讓使用者可以輸入來源圖片檔案、目標圖片的長寬。
2. 可以讀取trackbar的iniX、iniY的val在select window中畫出目標圖片的矩形框,並且讀取trackbar中zoom、rotate的val進行縮放及旋轉。
3.創造zoom的trackbar以及預設在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)
會將名為zoom的trackbar創建在preview window之中,初始值是50,最大值是100,當zoom這個trackbar被操作的時候呼叫zoom這個函式來處理。
4. 創造iniX、iniY的trackbar以及預設在0,利用xPos、yPos來得知當下的val後呼叫draw_rectangle進行畫新的矩形來移動。
5. 創造rotate的trackbar以及預設在0,利用degree來得知當下的val後呼叫draw_rectangle進行旋轉。
6. 創造saveFile的trackbar以及預設在0,利用x、y、w、h來的知xy的座標,以及目標圖片的長寬,然後利用crop_img來儲存從rotated_img擷取下來的特定矩形框的圖片,再用cv.imwrite將擷取下來的圖片檔存進名為crop.jpg的檔案。
成果展示與討論:
執行範例一:
執行範例二:
執行範例三:
執行範例四:



















 
 
 
留言
張貼留言