天天看點

OpenCV 透射變換

透射變換是視角變化的結果,是指利用透視中心、像點、目标點三點共線的條件,按透視旋轉定律使承影面(透視面)繞迹線(透視軸)旋轉某一角度,破壞原有的投影光線束,仍能保持承影面上投影幾何圖形不變的變換。

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
# 1 讀取圖像
img = cv.imread("./1.png")

# 2 透射變換
rows, cols = img.shape[:2]

# 2.1 建立變換矩陣
pts1 = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
pts2 = np.float32([[100, 145], [300, 100], [80, 290], [310, 300]])
T = cv.getPerspectiveTransform(pts1, pts2)

# 2.2 進行變換
dst = cv.warpPerspective(img, T, (cols, rows))

# 3 圖像顯示
fig, axes=plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title("原圖")
axes[1].imshow(dst[:, :, ::-1])
axes[1].set_title("透射後結果")
plt.show()      

繼續閱讀