s1101431 Homework #1

 

1122 Digital Image Processing Assignment #1 報告

學號:s1101431             姓名:鄭羽彤

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

專案目標:

  使用C++程式寫一個OpenCV程式,可以對一張圖片進行裁切,輸入想要顯示圖片的長、寬     (600*400),利用Trackbar調整要裁切的範圍,選取圖片中想要區域,改變旋轉角度得到不同樣式的照片,最後將圖片存檔。

開發平台: Microsoft Windows 11, Visual Studio 2022, OpenCV 4.90, C++


程式架構與功能說明:

1.  先從console輸入,要顯示的圖片檔名和圖片預設長、寬。

image name: yzu1.jpg (預計輸入圖片- yzu1.jpg, yzu2.JPG, yzu3.JPG)

length: 600

width: 400


2. 在名稱為[圖片]的這個視窗上,設計多條Trackbar來控制裁切範圍、縮放與旋轉。使用createTrackbar()建立一個trackbar,利用滑動控制。裁切範圍為一個矩形

X: 矩形左上角x座標     CutLength: 裁切矩形長     rotate: 旋轉角度       

Y: 矩形左上角y座標     CutWidth: 裁切矩形寬

3.  經過縮放和旋轉的圖片會顯示在Result window上,根據使用者滑動trackbar window會實時顯示裁切過的圖片。

4.  滑動得到的值,會在Cut函式中進行操作,使用Rect area(x, y, cutx, cuty); 去選取感興趣的區域,使用getRotationMatrix2D()WarpAffine(),對圖片進行旋轉。

為避免裁切範圍超出圖片造成錯誤,當選取範圍超過圖片尺寸時,會將選取長度或寬度調整成圖片目前最大尺寸 (:圖片原長600x300cutx>300時,會將cutx調為300(600-300))


5. 按下鍵盤上s鍵,就可以將選取好的圖片存檔,檔名為result.jpg

成果展示與討論:

範例一:


範例二:





留言

這個網誌中的熱門文章

rzwang Homework #1

s1093350 Homework #2

s1061637 作業6