Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带坐标阵列的透视变换_Python_Opencv_Coordinates_Transform_Perspective - Fatal编程技术网

Python 带坐标阵列的透视变换

Python 带坐标阵列的透视变换,python,opencv,coordinates,transform,perspective,Python,Opencv,Coordinates,Transform,Perspective,我有一个带有坐标(2D)的数组,希望在不同的四边形中计算新的坐标。我只知道两个四边形的角 例如,旧的四边形角坐标是 topleft(25,25), Topright(200,20), Botomleft(35,210), Botomright(215,200) 新的四边形: Topleft(-50,50), Topright(50,50), Botomleft(-50,-50), Botomright(-50,-50) opencv(cv2)中是否有特定的函数,甚至是公式 我搜索了很长一段时

我有一个带有坐标(2D)的数组,希望在不同的四边形中计算新的坐标。我只知道两个四边形的角

例如,旧的四边形角坐标是

topleft(25,25), Topright(200,20), Botomleft(35,210), Botomright(215,200)
新的四边形:

Topleft(-50,50), Topright(50,50), Botomleft(-50,-50), Botomright(-50,-50)
opencv(cv2)中是否有特定的函数,甚至是公式


我搜索了很长一段时间,似乎只能找到矩阵计算或转换整个图像或阵列的函数。

如果我理解正确,opencv具有您需要的功能:

首先,计算变换矩阵:

import cv2
import numpy as np
src = np.array(((25, 25), (200, 20), (35, 210), (215, 200)), dtype=np.float32)
dest = np.array(((-50, -50), (50, -50), (-50, 50), (50, 50)), dtype=np.float32)
mtx = cv2.getPerspectiveTransform(src, dest)
您会注意到,在计算变换(倒置的顶部和底部)之前,我自由地使
dest
的方向匹配
src

现在,矩阵可用于转换任何点阵列(在本例中为2D):

结果:

>>> converted
>>> array([[[-41.06365204 -40.27705765]
      [-49.48046112  -8.70405197]
      [ 18.60642052 -19.92881393]]])
最后一条建议是,请注意输入点数组的形状
original
:我发现它必须是一个3D数组

>>> converted
>>> array([[[-41.06365204 -40.27705765]
      [-49.48046112  -8.70405197]
      [ 18.60642052 -19.92881393]]])