作業說明:
撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋 轉 0 度至 359 度):利用一個滑動條(trackbar)控制旋轉角度。
開發環境:
- Windows10
- VSCode
- python 3.10.2
- OpenCV 4.5.5
執行Assignment2.py後輸入讀取圖片的路徑(記得要加副檔名)
執行結果:
程式碼:
mask = np.ones(img.shape[:2], dtype="uint8")
cv2.circle(mask, center, radius, 0, -1)
outSide = cv2.bitwise_and(img, img, mask=mask)
先將mask設定為與讀入圖片大小一樣的陣列並將參數全部設為1,用cv2.circle()將中間不要的部分設為0,最後使用bitwise_and()得到外面的部分,因為外部的部分不會動所以不用更新
示意圖:
mask = np.zeros(img.shape[:2], dtype="uint8")
cv2.circle(mask, center, radius, 1, -1)
再來我們用一樣的方法做內部圓圈的mask,0和1的部分反過來
rotation = cv2.getRotationMatrix2D(center, angle, 1)
rotatedImg = cv2.warpAffine(img, rotation, ((int)(row), (int)(col)))
rotatedImg[mask == 0] = 0
接下來我們在trackbar的callback function做出旋轉過後的圖片,並依照mask才出中間的圓圈
示意圖:
沒有留言:
張貼留言