Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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

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 3.x Python:使用透视图在OpenCV中旋转后确定点的坐标_Python 3.x_Opencv_Opencv4 - Fatal编程技术网

Python 3.x Python:使用透视图在OpenCV中旋转后确定点的坐标

Python 3.x Python:使用透视图在OpenCV中旋转后确定点的坐标,python-3.x,opencv,opencv4,Python 3.x,Opencv,Opencv4,我有一个图像img2,有两个特定的坐标点1(x,y)和点2(x,y)。当我以角度anglediff旋转图像时,这些点会移动到新图像rotated_image2中的新位置,我希望使用cv2.warpPerspective确定该位置。为此,我将这些点作为numpy数组pts提供给函数 pts = np.array([[point1[0],point1[1]],[point2[0],point2[0]]]) #given points M = cv2.getPerspectiveTransfo

我有一个图像
img2
,有两个特定的坐标
点1(x,y)
点2(x,y)
。当我以角度
anglediff
旋转图像时,这些点会移动到新图像
rotated_image2
中的新位置,我希望使用
cv2.warpPerspective
确定该位置。为此,我将这些点作为numpy数组
pts
提供给函数

  pts = np.array([[point1[0],point1[1]],[point2[0],point2[0]]]) #given points
  M = cv2.getPerspectiveTransform(pts,rotated_image2)
  dst = cv2.warpPerspective(img2,M,(500,400))
问题: 在运行函数时,脚本抛出

cv2.error: OpenCV(4.4.0) /tmp/pip-req-build-zeowd5_m/opencv/modules/imgproc/src/imgwarp.cpp:3391: error: (-215:Assertion failed) src.checkVector(2, CV_32F) == 4 && dst.checkVector(2, CV_32F) == 4 in function 'getPerspectiveTransform'
我的研究表明,这些变量中的任何一个
pts
rotated\u image\u 2
都没有正确传递

问题:

  • 如何在新的旋转图像中找到P1和P2的新坐标

  • 如果我走对了路,我该如何着手解决这个问题


  • getPerspectiveTransform
    要求第一个参数(
    src
    )中有四个点,第二个参数(
    dst
    )中有四个点。第一个参数传递两点,第二个参数传递未知变量

    src.checkVector(2,CV_32F)=4
    检查输入是否为CV_32F(单浮点)以及是否为2列4行

    在任何情况下,获得单应后,可以将其传递到warpPerspective以扭曲图片,或传递到
    perspectiveTransform
    以变换点/坐标数组


    反转单应矩阵(
    np.linalg.inv
    或OpenCV自己的API)以另一种方式映射事物。

    可能是错误的数据格式。看起来
    warpPerspective
    在您传递
    float64
    时需要
    float32
    ?使用
    dtype=“float32”
    转换数据类型没有什么区别。请注意,错误是由
    M=cv2.getPerspectiveTransform(pts,rotated_image2)