cv2.perspectiveTransform()透视变换原理

opencv中透视变换

k [ x ′ y ′ 1 ] = H [ x y 1 ] k\begin{bmatrix}x'\\y'\\1 \end{bmatrix}=H\begin{bmatrix}x\\y\\1 \end{bmatrix}\\ kxy1=Hxy1

corners = np.array([[281, 238], [325, 297], [283, 330],[248, 325]], dtype=np.float32).reshape(-1, 1, 2)
H = np.array([1,0,0,0,1,0,1,0,1], np.float32).reshape(3, 3)
new = cv.perspectiveTransform(corners, H)
corners = np.array([281, 238,1], dtype=np.float32)
vec=np.matmul(H, corners)
print(vec[0]/vec[2],vec[1]/vec[2])
print(new[0][0])

注意

perspectiveTransform()输入至少需要4个点,且点的坐标矩阵为(-1,1,2)即n个一行两列的坐标矩阵,两列代表横纵坐标,其等价于将坐标齐次化后,与H矩阵的乘法运算

运行结果

在这里插入图片描述

你可能感兴趣的:(图像处理,线性代数,python,图像处理)