问题标签 [houghlines]

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 回答
300 浏览

python - Houghlines 未检测到简单矩形的顶线

我难住了。这是一个黑色背景上的简单白色矩形。Houghlines 找不到顶线。它可以找到所有其他的,只是找不到顶部。

任何人?

https://www.screencast.com/t/bNu4sptcS3a

0 投票
1 回答
812 浏览

java - OpenCV HoughLine 仅检测图像中的一行

我正在按照 openCV 的文档/教程来检测图像中的线条。但是,我只得到了图像中四个相似线条中的一个。这是结果

这是我的代码:

我尝试过使用阈值参数,但我一直得到相同(有时是最差)的结果。有人能指出我在哪里做错了吗?

0 投票
0 回答
997 浏览

python - 使用 OpenCV 和 Python 检测图像中的线条

[更新最后的问题] 我正在尝试在 640x480 图像中检测简单几何形状的设计模式。我已将图像划分为 32x32 块,并检查每个形状的中心位于哪个块中。

基于此计算,我创建了一个 (160x120) 零 (float32) 的 numpy 矩阵, col=640/4 row=480/4 每次找到形状时,都会计算中心并检查在哪个块中找到它。160x120 numpy 数组中的相应项目及其 8 个邻居设置为1。最后,160x120 numpy 数组表示为灰度图像,黑色背景和白色像素表示检测到的形状块。

如下图所示。 左上角的图像代表 160x120 的 numpy 数组。

左上角的图像代表 160x120 的 numpy 数组。到目前为止没有问题。

如您所见,新生成的图像在黑色前景上有一条白线。我想找到这条线的 rho,theta,x0,y0,x1,y1。所以我决定为此使用 HoughLines 转换。

对于如下:

g_quadrants是代表灰度图像的 160x120 矩阵,但输出cv2.HoughLines不包含任何内容,但None.

请帮我解决一下这个。

更新:

真实场景

显示白色的黑白(np.float32 考虑灰度)图像的小窗口是我实际得到的

  • 将 640x480 分成 32x32 块
  • 找到图像中的三角形
  • 创建一个 32x32 矩阵来映射每个块的结果
  • 如果在块中找到三角形,则将相应的矩阵元素更新1

放大视图:

32x32 np.float32 图像的缩放视图

您可以看到有白色像素形成一条直线。这可能是一些不需要的检测。我需要消除不需要的孤立像素并重建一条连续的直线。这可以通过扩张然后侵蚀图像来实现。我需要这条线的 find x0,y0, x1,y1, rho, theta。

它们可能不止一行。在这种情况下,我需要找到关于长度的前 2 行。

0 投票
2 回答
1948 浏览

python - OpenCV 的 HoughLines 以什么顺序列出 [rho,theta] 矩阵中检测到的线?

当给定的带有线条的图像被传递到 OpenCV 的 HoughLine 变换时,它会返回一个 rho 和 theta 对的列表,每对定义一条单独的线。在这个 rho,theta 对列表中列出的行的顺序是什么。

例如,当这个 8 行的 图像在 python 中使用时,8 行的图像

接下来,为八行返回 rho,theta 矩阵。

在这个矩阵中列出的行的顺序是如何由 openCV 确定的?

0 投票
0 回答
2302 浏览

python-3.x - cv2.HoughLinesP() 返回的值是什么意思?

我正在使用此代码来检测 PNG 图像中的线条,并且该函数返回一个 numpy 数组:

我想知道这些值的含义,以便获得检测到的线的长度和方向。

*使用的图像仅包含一条水平线。

0 投票
1 回答
1095 浏览

opencv - 如何在极坐标中找到垂直线?

假设我有下图中显示的线条,以极坐标格式(rho 和 theta)表示。这些行是 OpenCV 的 HoughLines 函数经过一些后期处理后的输出。(对不起,我还不允许嵌入图像。)

在此处输入图像描述

我想要做的是,给定任何一条线,找到与该线垂直的所有线,如下面的第二张图所示。

在此处输入图像描述

我了解如何使用笛卡尔线来做到这一点,但是我很难围绕 rho 和 theta 的哪些属性,这两条线必须是垂直的,尽管我至少从根本上了解极线是如何工作的。对不起,如果这是基本的东西,但我无法在任何地方在线找到任何解释。我需要先将线条转换为笛卡尔坐标,还是有一些更简单的方法可以做到这一点?任何帮助将不胜感激,谢谢!

0 投票
1 回答
1081 浏览

python - Houghlines中的笛卡尔坐标

为什么我们不能在 Houghlines 变换中使用笛卡尔坐标 (x,y) 而不是极坐标 (r,theta) ?任何人都可以澄清吗?

0 投票
1 回答
2016 浏览

c++ - 如何从 OpenCV C++ 中的 HoughLines 函数输出中绘制所需的线?

语境 :

讲座的第 8 页说 OpenCV HoughLines函数返回一个 N x 2 线参数rhotheta数组,该数组存储在名为lines的数组中。

然后为了从这些角度实际创建线,我们有一些公式,稍后我们使用线函数。这些公式在下面的代码中进行了解释。

代码 :

输入图像:

在此处输入图像描述

观察1:

在此处输入图像描述

观察 2:

在此处输入图像描述

问题:

在上面显示的代码中,如果我们将数字与 a、-a、b 和 -b 相乘,我们会得到不同长度的行。当我乘以 200 而不是 1000(导致观察 1)时,得到了观察 2。

有关更多信息,请参阅上面显示的代码第 18 行和第 19 行中的注释。

问题:

当我们从 HoughLines 输出中绘制线条时,我们如何控制线条的起点和终点?

例如,我希望观察 2 中的右车道(从左上角指向右下角的红线)从屏幕的右下角开始并指向屏幕的左上角(就像左车道的镜像)。

0 投票
0 回答
86 浏览

image-processing - 匹配同一图像中的线条

我在同一张图像中使用霍夫变换来获得相同图像的更多行。现在我想匹配这些行,最后有几行标识我的目标。

0 投票
0 回答
937 浏览

opencv - 仅检测二值图像中的垂直线

我正在处理一些二进制图像,我想在其中找到二进制图像的边界线。因此,作为示例,这是一个输入图像:

在此处输入图像描述

我所做的是使用边缘检测和线检测霍夫变换来从图像中获取边界。所以我要做的是:

现在绘制这些线会产生以下图像:

在此处输入图像描述

但是,我想要做的是只检测垂直线,即图像中“向上”的线。我想我必须操纵霍夫变换参数,但找不到只返回垂直线的组合。