【问题标题】:What does parameter "lines" means in OpenCV function: cv2.HoughLinesP()OpenCV函数中的参数“lines”是什么意思:cv2.HoughLinesP()
【发布时间】:2018-02-11 20:36:20
【问题描述】:

文档里有写:

lines - 线的输出向量。每条线由一个代表 4 元素向量 (x_1, y_1, x_2, y_2) ,其中 (x_1,y_1) 和 (x_2, y_2) 是每个检测到的线段的终点。

这个参数的值是多少?线=?

【问题讨论】:

  • 我认为这很容易解释......一个由 4 个元素元组(可能是列表)组成的向量,具有线段的两个点......所以类似于 [(x1,y1,x2,y2), ...., (x1,y1,x2,y2)],换句话说线段列表
  • 当我使用 cv2.HoughLinesP() 时,输出看起来像这样 [[ x1, y1, x2, y2]]。我可以把lines=1 或lines=15 .. 没有任何区别。我只想知道这个参数是干什么用的。
  • 是输出参数

标签: python opencv


【解决方案1】:

到目前为止我学到了什么:

老实说,这看起来像是要在 OpenCV 的源代码中修复(或至少在文档中)。

首先,我们从文档中看到lines是“线的输出向量”,有点循环定义,暗示它是HoughLinesP的输出。

np.mat([])np.array([]) 是此参数的有效值这一事实强化了这一点,而尝试 list() 将导致错误:

TypeError: Expected cv::UMat for argument 'lines'

但是没有任何有效的参数选项对您作为参数传递的对象有任何影响(对于上面的示例返回“[]”)。更令人困惑的是,传递一个数字是可以接受的,但对结果没有影响。

这非常令人担忧,因为即使是 the official documentation 也会弄错。看看他们提供的这个例子:

lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)

但是如果你检查代码中参数的顺序:

image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None

他们显然将minLineLength 传递为lines,这不会导致错误,因为int 值在某种程度上是可以的。因此,maxLineGap 用作最小行长度,如果您更改此参数,您可以通过查看结果来实际检查!

这是我目前所知道的。感谢您的贡献和更正!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2020-05-15
    • 2015-07-11
    • 1970-01-01
    相关资源
    最近更新 更多