python - 如何获得透视变形图像中点的(x,y)?

标签 python opencv perspective

我在原始图像上有一点,并且在图像上做了透视变形。现在如何在扭曲图像上获得该点的像素?这是示例:

import cv2
import numpy as np

original_img = cv2.imread('1.jpg')
# one point(400,560) on the original image
cv2.circle(original_img, (400,560), 7, (0,255,255), -1)
original_points = np.float32([(0,560), (0,450), (795,568), (795,748)])
destination_points = np.float32([(0,400), (0,0), (600,0), (600,400)])
# transformation matrix
M = cv2.getPerspectiveTransform(original_points, destination_points)
# warp perspective
warpped_img = cv2.warpPerspective(original_img, M, (600,400))
cv2.imshow('original', original_img)
cv2.imshow('warpped', warpped_img)
cv2.waitKey(0)

这是原始图像:
enter image description here

这是变形的结果:
enter image description here

原始图像上的点是(400,560)。如何在变形图像上计算该点的像素?

最佳答案

import cv2
import numpy as np

original_img = cv2.imread('1.jpg')
# one point(400,560) on the original image
cv2.circle(original_img, (400,560), 7, (0,255,255), -1)
original_points = np.float32([(0,560), (0,450), (795,568), (795,748)])
destination_points = np.float32([(0,400), (0,0), (600,0), (600,400)])
# transformation matrix
M = cv2.getPerspectiveTransform(original_points, destination_points)
pt =  np.array([[[400,560]]], dtype=np.float32)
dst_pt = cv2.perspectiveTransform(pt, M)
dst_pt = dst_pt.astype(int)
dst_pt = tuple(dst_pt[0,0,].tolist())
# warp perspective
warpped_img = cv2.warpPerspective(original_img, M, (600,400))
cv2.circle(warpped_img, dst_pt, 7, (0,255,255), -1)
cv2.imshow('original', original_img)
cv2.imshow('warpped', warpped_img)
cv2.waitKey(0)

关于python - 如何获得透视变形图像中点的(x,y)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51816826/

相关文章:

python - ctype Linux so库指针类型错误

ios - 为什么 cv::resize 这么慢?

css - 在 CSS 透视图上使用单位

javascript - 单点透视作图时如何确定Z-order?

html - rotateY() 文本模糊/像素化

python - 如何从单个 RDD 添加 2 个 RDD 的列,然后根据 PySpark 中的日期数据聚合行

python - 如何使用 numpy 在线性时间内通过唯一值获取累积计数?

python - 高效(时间和空间)字典数据库(唯一词到 uniq id 和返回)

opencv - 如何使用 OpenCV 从点获取轮廓

python - np.rot90() 损坏 opencv 图像