问题标签 [houghlinesp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5414 浏览

python - Python OpenCV HoughLinesP 无法检测线

我正在使用 OpenCV HoughlinesP 来查找水平线和垂直线。它大部分时间都没有找到任何线路。即使它找到一条线,它甚至与实际图像都不接近。

输入图像: 输入图像

输出图像:(见红线): 在此处输入图像描述

@ljetibo 试试这个: c_6.jpg

0 投票
1 回答
973 浏览

java - 在 Android + OpenCV 上的 HoughLinesP 之后删除重复的行

我正在尝试检测黑色图像中的白色矩形。我在Canny之后用过HoughLinesP,检测准确。问题是,有些线条非常相似,几乎定义了相同的边缘。因此,在 HgouhLinesP 返回的矩阵中,我拥有的不止是 4 行。是否可以更改 HoughLinesP 中的参数以使其仅生成 4 行?

我试图实现一种方法,比较所有生成的线的方程,但相似的线似乎有非常不同的方程,结果是错误的。所以基本上我创建了一个 4x4 矩阵并将第一行放入其中。然后我比较以下几行,当其中一条不同时,我将其放入 4x4 矩阵等中。我将其余行与 4x4 矩阵中已经存在的行进行比较。有人可以帮忙吗?

0 投票
4 回答
51122 浏览

python - OpenCV houghLinesP 参数

我很难在 Python 中使用 HoughLinesP 和 OpenCV 在此图像中找到棋盘上的线条。

为了理解 HoughLinesP 的参数,我想出了以下代码:

我遇到的问题是这只拿起一行。如果我将 maxLineGap 减少到 1,它会增加数千个。

我理解为什么会这样,但是我如何选择一组合适的参数来合并所有这些共线线?我错过了什么吗?

我想保持代码简单,因为我将它用作此函数的示例。

提前感谢您的帮助!

更新:这与 HoughLines 完美配合。

而且似乎没有边缘检测问题,因为 Canny 工作得很好。

但是,我仍然需要让 HoughLinesP 工作。有任何想法吗??

图片在这里:结果

0 投票
3 回答
5850 浏览

python - Opencv python HoughLinesP 奇怪的结果

我试图获得与教程中 HoughLinesP 过滤器相同的结果。我像这样拍摄了相同的图像和相同的阈值:

Lineclass 是一个自定义类,它不做任何有趣的事情,只是计算一些东西并画线。然后我得到这两张图片:在此处输入图像描述 在此处输入图像描述

所以你可以看到我在图像中间只有一条线。

不知道出了什么问题。我错过了什么?

谢谢。

0 投票
1 回答
95 浏览

c++ - 搜索与 HoughLinesP 和 c++ 形成角度的线段

我想调用一个函数来比较我在代码中计算的所有段,并知道我的视图中有多少多边形,由直线组成,由 3、4 或更多段组成,形成闭合路径,或者我想知道有多少对直线段形成一个角度(因此有一个共同点):

或者,试图简化,我如何计算段之间的交叉点数?

0 投票
1 回答
1970 浏览

opencv - 将 HoughLinesP 输出行格式转换为 HoughLines 输出行格式

提醒

HoughLines输出线:

在此处输入图像描述

HoughLinesP输出线: 在此处输入图像描述

问题

如何从 HoughLinesP 线条格式转换为 HoughLines 线条格式?

详细信息 我已经根据 HoughLines 输出线制作了一个算法,所以我真的不需要线段结束点信息。

0 投票
1 回答
1614 浏览

python - Python 和 OpenCV - 霍夫线变换中的主导线

对于我的程序,使用 OpenCV 和 Python,我正在尝试检测道路车道。为了做到这一点,我使用霍夫线变换来检测线条。但是,它发现许多线彼此相邻,我正在尝试找到一种方法来制作一条位于所有其他线之间的平均线。提示?

这是我的代码:

0 投票
0 回答
2374 浏览

python - 使用 Python 在 OpenCV 中的 HoughLineP() 中查找线的坐标

我正在做一个边缘检测/画线视觉项目(使用 OpenCV 和 Python)。
我可以使用 cv2.Canny() 在图像中找到我想要的边缘,并使用 HoughLinesP() 在这些边缘上画线。
我试图弄清楚如何找到使用 HoughLinesP() 绘制的线的“端点”,以便我可以将线的斜率与值范围进行比较(基本上,我试图查看这些线是否垂直- 足够“好”)。
我有点坚持寻找使用 HoughLinesP() 绘制的线的点。
我画线的代码是

现在,我可以找到数组的“形状”,线条,但我不确定这些值是什么意思......基本上,我从这里去哪里?

返回 (1038, 1, 4) 。

我知道这是一个 3D 数组。但是如何确定图像中的哪些点对应于数组中的哪些元素呢?
有没有办法将“线”中的元素与图像上的像素相关联?

谢谢!

编辑:

print([lines[0]])
返回:
[array([[348, 159, 348, 159]])]

认为对应于单行的 (x_start, y_start),(x_end,y_end) 点(上面的特定点似乎是单点,即相同的开始和结束坐标)。如果我正确理解一切。

但是,当试图找到最大的 x 和 y 坐标(线的“顶部”和“底部”)时,我得到了奇怪的结果。

这就是我正在做的事情:

a,b,c = lines.shape for i in range(a): max_y = np.maximum(lines[i][0][1], lines[i][0][3]) min_y = np.minimum(lines[i][0][1], lines[i][0][3])

现在,当我回去打印并显示这些语句的结果时......我没有得到线条上的点......给出了什么?

0 投票
1 回答
3894 浏览

python - img 不是一个 numpy 数组,也不是一个标量......但是我的代码中没有将“img”用作变量名

我试图在视频中找到垂直线。Python 2.7 和 OpenCV 3。
我正在使用背景减法,然后应用 Canny 边缘检测过滤器。
我已经能够将 HoughLinesP 方法应用于单个图像,但需要将其扩展到视频。

我在运行一组基本代码时收到此错误(我相信它对应于下面的“a,b,c = hlines.shape”行):

现在,发生了一些奇怪的事情,首先“img”不是这个脚本中的变量名(尽管它在我过去编写的其他脚本中使用过,并且在...上调用了 HoughLinesP...虽然这在这里可能无关紧要)。另一个奇怪的是,相同的代码在从该视频文件中获取的 .PNG 图像上运行良好。
我能够很好地打开视频文件并应用上面提到的过滤器。
现在,有趣的是,出于某种原因……“if not args.get("video", False):" case 也被输入了。即使我可以通过终端“访问”该视频文件也很好。
我也可以输出 (print(hlines.shape)) 就好了...

这是代码。注释掉“for循环”的行可以让它运行得很好。

任何建议,将不胜感激。

0 投票
1 回答
3837 浏览

python - “NoneType”对象没有“形状”属性......即使我可以打印出来

我试图在视频中找到垂直线。Python 2.7 和 OpenCV 3。我正在使用背景减法,然后应用 Canny 边缘检测过滤器。我已经能够将 HoughLinesP 方法应用于单个图像,但需要将其扩展到视频。

我在运行一组基本代码时收到此错误(我认为它对应于下面的行 (30-33):

奇怪的是,如果我调整代码以便应用背景减法(注释第 26 行并更改第 28 行,使其引用“frame”而不是“img_sub”),一切正常。我错过了什么?
我可以很好地输出背景减去的视频流,并且可以按预期工作。
我可以输出/打印(hlines)就好了。
'hlines' 的示例终端输出

但是,一旦我尝试使用 hlines.shape 属性,事情就会变得不稳定。

任何建议,将不胜感激。

编辑:
@ivan_pozdeev 向我指出了这个问题。

它看起来确实适用。但是,在尝试遵循他们的解决方案时,我收到以下错误:

Traceback(最近一次调用最后一次):文件“test3.py”,第 37 行,在 hlines 中 for l:TypeError:'NoneType' 对象不可迭代

这是修改后的代码片段:

现在,如果我没有数据,这对我来说是有意义的……但我确实有数据在 hlines 中返回。我可以使用 print(hlines) 语句将其打印出来。但是,它的格式与 OpenCV 2.4 不同...但是,现在我想知道为什么它在另一个问题中有效...

EDIT2:
啊哈!取得进展。这是脚本的输出 (print(hlines)) 如果我只循环两次...即当 run_once = 0 while(run_once<=1) ... run_once = 1+ run_once 最后

所以看起来第一行 hlines 是“None”。我认为这解释了错误。但是,现在我需要弄清楚如何将“空行”添加到 hlines ....