iT邦幫忙

2021 iThome 鐵人賽

DAY 8
1

因為旋轉時需要以某個點為旋轉中心,這邊需要特別用由 OpenCV 提供的shape函式找出圖片的長與寬,才能進行後續動作~

旋轉時會用到 cv2.getRotationMatrix2D 這個函式! 括號裡面

  • 第一個參數代表旋轉中心
  • 第二個參數是旋轉角度(-順時針/+逆時針)
  • 第三個參數是圖片的縮放比例
import cv2

img = cv2.imread('img.jpg')
(h, w, d) = img.shape      # 讀取圖片大小
print(img.shape)
center = (w // 2, h // 2)  # 找到圖片中心
    
M = cv2.getRotationMatrix2D(center, 20, 1.0)  #旋轉20度(逆時針)
 # 處理旋轉過後的圖片
rotate_img = cv2.warpAffine(img, M, (w, h)) 
cv2.imshow("Result", rotate_img)

cv2.waitKey(0)
cv2.destroyAllWindows()

執行結果:

因為圖片在旋轉過後會有被裁掉的地方 → 用cv2.warpAffine函式處理:

圖像的旋轉加上拉升就是圖像仿射變換,仿射變化需要一個 M 矩陣就可以,但是由於仿射變換比較複雜,一般直接找很難找到這個矩陣。
opencv 提供了根據變換前後三個點的對應關係來自動求解 M。
函數輸出的就是模擬射位置矩陣 M!


上一篇
[D07] OpenCV 基本的影像調整
下一篇
[D09] OpenCV 應用範圍
系列文
從林到有_Image processing30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言