如何用Python實(shí)現(xiàn)圖像的仿射變換與透視變換

小億
279
2024-04-29 19:02:53

要實(shí)現(xiàn)圖像的仿射變換和透視變換,可以使用Python中的OpenCV和NumPy庫(kù)。下面是使用這兩個(gè)庫(kù)實(shí)現(xiàn)圖像的仿射變換和透視變換的示例代碼:

  1. 仿射變換:
import cv2
import numpy as np

# 讀取圖像
img = cv2.imread('image.jpg')

# 定義仿射變換矩陣,例如將圖像向右平移100像素,向下平移50像素
M = np.float32([[1, 0, 100], [0, 1, 50]])

# 應(yīng)用仿射變換
rows, cols = img.shape[:2]
img_affine = cv2.warpAffine(img, M, (cols, rows))

# 顯示處理后的圖像
cv2.imshow('Affine Transformation', img_affine)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 透視變換:
import cv2
import numpy as np

# 讀取圖像
img = cv2.imread('image.jpg')

# 定義透視變換矩陣,例如將圖像的四個(gè)角點(diǎn)分別映射到新的位置
pts1 = np.float32([[50, 50], [200, 50], [50, 200], [200, 200]])
pts2 = np.float32([[10, 100], [200, 50], [100, 250], [280, 200]])
M = cv2.getPerspectiveTransform(pts1, pts2)

# 應(yīng)用透視變換
img_perspective = cv2.warpPerspective(img, M, (cols, rows))

# 顯示處理后的圖像
cv2.imshow('Perspective Transformation', img_perspective)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上示例代碼分別實(shí)現(xiàn)了圖像的仿射變換和透視變換,可以根據(jù)具體需求調(diào)整變換矩陣和變換的參數(shù)。

0