s1081408 作業2
- Windows 10
- OpenCV 4.5.5
- Visual Studio 2022
- 語言:C++
- 作業說明:
- Image Rotation: 讀取圖片後,旋轉整張圖像(mode A)或圖片中心內切圓區域(mode B)。
- 旋轉區域的旋轉角度用TrackBar來控制:逆時針旋轉0-359度。
- 程式功能:
- 讀取圖片:輸入圖片路徑後,若路徑存在使用imread()把圖片讀進來,若路徑不存在則提示使用者並結束程式。
- 輸入旋轉模式後,對指定圖片區域進行旋轉:
- createTrackbar()在視窗內創建一個Trackbar,改變bar的值可以改變照片旋轉角度。
- 取得輸入圖片的中心位置,再利用getRotationMatrix2D()根據bar的值以及圖片的中心點,得到旋轉矩陣。
- 根據不同模式進行不同的旋轉操作:
- A mode: 旋轉整張圖片。
- 旋轉圖片:warpAffine()將初始輸入圖片根據旋轉矩陣,得出旋轉後的圖片。
- B mode: 旋轉內切圓區域。
- 畫圓:用circle()繪製出一個實心圓,黑色部分為0,白色部分是255。
- 得到兩張不同區域(圓內和圓外)的圖片:將以上圖片(circle)和初始圖片(img)進行AND操作,這樣能夠把圖片分成內切圓外(~circle&img)和內切圓內(circle&img)的圖像。
- 只旋轉內切圓內的圖片:得到內切圓內的圖像後,只對它進行旋轉,用warpAffine()將初始內切圓內圖片根據旋轉矩陣得出旋轉後的內切圓內圖片。
- 合併兩張圖像:接著利用addWeighted()把旋轉的內切圓圖片和內切圓外不做旋轉的圖片疊加在一起。
3.
imshow()顯示操作後結果,waitKey()等待使用者按任意鍵後關閉視窗,使用者可再 次輸入圖片,回到步驟1。
沒有留言:
張貼留言