【问题标题】:OpenCV-Python: What is correct shape of points for finding epipolar lines?OpenCV-Python:找到极线的正确形状是什么?
【发布时间】:2014-07-02 15:25:17
【问题描述】:

我在使用 OpenCV-Python 中的 computeCorrespondEpilines() 函数时遇到问题。根据文档,点矩阵描述为:

"输入点。CV_32FC2 或向量类型的 N x 1 或 1 x N 矩阵"

但是,我不确定这在 Python 中意味着什么。我尝试使用元组列表,但它不是 Numpy 数组,所以我尝试了一个 Numpy 元组数组,但它会自动转换为 Nx2 矩阵。我还尝试了一个 Numpy 结构化数组作为元组列表,但是 Epilines 函数然后说“不支持点数据类型 = 20”,这在 Google 中实际上有 0 个结果。

有谁知道这个函数所需的点矩阵的正确形状/类型是什么?

【问题讨论】:

    标签: python arrays opencv numpy


    【解决方案1】:

    似乎有一个问题。 CV_32FC2 类型实际上是一个包含两个通道(值)的类型。向量也是如此。

    因此,实际上该函数似乎需要形状为 (N, 1, 2) 或 (1, N, 2) 的 3D 数据。如果你有一个 N x 2 矩阵M,那么你可以使用这个:

    MM = M.reshape((1,-1,2))
    

    这应该给出一个合适的数组MM,其形状为 (1, N, 2)。如果这不起作用,请尝试:

    MM = M.reshape((-1,1,2))
    

    给出一个 (N, 1, 2) 数组。

    另外,cv2 可能对数据类型非常挑剔,因此您可以尝试将您的观点转换为正确的类型:

    MM = M.reshape((-1,1,2)).astype('float32')
    

    也是。

    【讨论】:

    • 谢谢,我尝试了两种方法,但我仍然收到“不支持点矩阵格式”的错误。不过谢谢你解释数据类型,我现在更好理解了!
    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多