登录 |  注册 |  繁體中文


python图像 透视变换

分类: python 颜色:橙色 默认  字号: 阅读(1254) | 评论(0)

我们想将倾斜视角拍摄到的道路图像转换成鸟瞰图,即将摄像机的视角转换到和道路平行。

我们选取道路上的两条平行分界线上的四个点A(165, 270)、C(360, 125)、D(615, 125)、B(835, 270),对应于鸟瞰图上的点则分别为A(165, 270)、C'(165, 30)、D'(835, 30)、B(835, 270)。

经过透视变换后,即可等到如下图, 

图像的透射
对于透视变换,需要一个3x3变换矩阵。 即使在转换之后,直线仍将保持笔直. 要找到此变换矩阵,输入图像上需要4个点, 在这4个点中,其中3个不应该共线. 然后可以通过函数cv2.getPerspectiveTransform找到变换矩阵. 然后将cv2.warpPerspective应用于此3x3变换矩阵。

4. 透视变换

import cv2
import numpy as np

img = cv2.imread("c:/lena.png")
rows, cols, channel = img.shape

pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])

M = cv2.getPerspectiveTransform(pts1,pts2)

dst = cv2.warpPerspective(img,M,(300,300))


cv2.imshow("img", dst)
cv2.waitKey(0)


上一篇:Tensorflow学习   下一篇:cv2 绘图 复习

姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部