问题标签 [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 回答
610 浏览

python - Python Hough Lines 实现,提高时间效率

所以我试图在python中实现霍夫变换线算法,我发现很难让它变得高效。

这是我的实现:

它可以工作,但速度很慢,比 opencv 实现慢 100 倍。

我该如何改进它?

0 投票
1 回答
2883 浏览

python - 使用 opencv 自动校正歪斜

我想要一种自动检测和纠正收据图像歪斜的方法,我试图找到不同旋转角度的行之间的差异,并选择具有最大差异的角度。为了计算方差,我做了以下事情:

1.对于每一行,我计算了像素值的总和并将其存储在一个列表中。

2.找到列表的方差使用np.var(list)

然而,倾斜图像的方差将超过正确对齐的图像,有没有办法纠正这个问题

  • 水平文本对齐图像的方差(必需):122449908.009789

  • 垂直文本对齐图像的方差:1840071444.404522

垂直的

水平的

我尝试过使用 HoughLines 但是由于文本之间的间距太少,检测到的垂直线也太少了,因此这也失败了

任何修改或其他方法都值得赞赏

0 投票
1 回答
36 浏览

c++ - c++,opecv:HoughLines() 不接收轨迹栏传递的值

我应该使用 HoughLines 函数检测道路的两条白线。我使用三个轨迹条来找到仅检测道路的两条白线的最佳参数。我试过这个:(问题是即使我更改了轨迹栏的值,它也不会更新图像,它仍然是第一个值)。我正在使用带有 C++ 的 opencv。

没有轨迹栏它可以工作,但没有它几乎不可能找到好的值,因为我不知道如何调整参数并且图像非常复杂。

HoughLines() 看起来没有回答使用轨迹栏设置的值。窗口正常显示,slider_value_one、slider_value_two、slider_value_three 具有正确的值,因为我打印并看到了它们,所以我不明白为什么 HoughLines() 不采用传递的值。

0 投票
2 回答
265 浏览

opencv - 在opencv中使用HoughLines进行线检测

我想检测这样的图片中的线条: 在此处输入图像描述

我的代码是这样的:

结果是这样的: 在此处输入图像描述

似乎 HoughLinesP 无法检测到水平线,无论我扭曲上面的参数值是多少。有没有办法同时检测水平线和垂直线?

非常感谢 !

0 投票
1 回答
1420 浏览

python - Python OpenCV:霍夫变换没有检测到明显的线条

问题: 我想在 Python 中使用 OpenCV 检测给定图像中的线条。尽管有多条明显的垂直线,但无论是普通 HoughLines 还是概率 HoughLines 都找不到它们。由于我花了很多时间玩参数,我想我在这里做一些根本性的错误。我知道这样一个事实,即 hough-lines 通常应用于边缘,例如在使用 canny 之后。由于 canny 的非最大抑制,canny 在这里没有给出好的结果。

图像,检测垂直线失败:

在此处输入图像描述

为什么: 鉴于此(水表的图像):

在此处输入图像描述

我想检测每个数字周围的矩形。为了检测矩形,我在 x 和 y 方向上使用了 sobel 滤波器,并计算了梯度的幅度和角度/相位。由于我假设图像在此步骤中正确旋转,因此我提取了垂直和水平边缘,如图所示。我希望利用 houghLines 找到边界框。找到水平线效果很好,如图所示

包含对问题的进一步见解的调试图,因为我不处理垂直组件(第二行):

在此处输入图像描述

检测每个数字周围的矩形将帮助我

  1. 定位感兴趣的区域
  2. 切出矩形内的区域,也就是数字。其他几种使用轮廓直接检测数字的方法都存在外部矩形干扰数字的问题。

更新:检测垂直线的代码:

0 投票
1 回答
178 浏览

java - 安卓 Java OpenCV。检测和绘制霍夫线的问题

我尝试在安卓手机上使用 OpenCV 来检测线路。我只是初学者,我不完全理解这段代码,因为我是从互联网上改编的。最后我只看到一行,而不是全部。有人能帮我吗?

0 投票
1 回答
843 浏览

python - 通过 Hough 变换检测框

使用 HoughTransform 我正在尝试检测框并提供不同的颜色。

到目前为止我的理解是一个盒子是水平和垂直的线。

精明的

我的代码是

我该怎么做才能使盒子着色或识别?

0 投票
1 回答
2721 浏览

python - 如何防止 HoughLines 多次检测某些行

因此,我正在编写这段代码以从图像中的某些图形中提取数据。这些图像都是从一本书中扫描出来的。由于我们在这里讨论的是 100 多张图像,因此我当然想自动化该过程。我的第一步是确保所有图像都对齐。因为这本书的页面是手工扫描的,所以扫描件彼此之间都有轻微的偏移或旋转。幸运的是,图像上有一些虚线,可以用作对齐它们的参考点。之后,我可以通过在这些虚线上对图像进行切片,将图像分成更小的子图像。这样,所有扫描图像的所有子图像都是相同的。

所以,第一步当然是检测这些虚线。我的策略可以用 4 个步骤来描述:

  • 使用形态变换将虚线变为实线
  • 使用 Canny Edge Detection 检测所有边缘
  • 使用 HoughLines 识别线条
  • 在蒙版上绘制这些线以供进一步使用

现在可能会出现几个问题。有时 HoughLines 会检测到错误的线条(例如书中下一页的折叠),但这可以通过在右侧稍微裁剪图像来解决(总是欢迎更好的解决方案)。第二个(也是最大的)问题是 HoughLines 有时倾向于将单行识别为多行。我认为这与 Canny Edge Detection 对边​​缘过于粗糙或模糊有关,因此 HoughLines 实际上会看到多条线。有没有一种方法可以“平滑” Canny 的输出,以便 HoughLines 准确检测每条线一次?

在这个特定图像的情况下,中间的垂直虚线没有被识别,而书中下一页的折叠却被识别。此外,垂直虚线被识别为多条线。(左源图像,检测到中间边缘,检测到右线)

在此处输入图像描述

0 投票
1 回答
345 浏览

python - Hough Line 仅使用 OpenCV 和 Numpy 在 python 中写入 1 行

我正在学习将 HoughLines() 与 Python、OpenCV 和 numpy 一起使用。我使用下面的图片:

在此处输入图像描述

我正在尝试检测所有线条,而不仅仅是最粗的线条。结果如下:

在此处输入图像描述

这是我的代码:

我在这里使用教程/代码: https ://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

这看起来很简单,但在本教程中,使用的图像是报纸上的数独,并且在我得到单行的地方返回了许多行。正如您在代码中看到的,我已输出edges到单独的图像以查看那里发生了什么,结果如下:

在此处输入图像描述

似乎找到了许多边缘,但我只得到一条红线,而不是很多。我的代码在哪里不正确?

0 投票
0 回答
36 浏览

python - 检测彼此最远的霍夫线?

我正在从图像中检测一张纸。目前,检测其边缘并绘制霍夫线非常成功。但是,为了概括和扩展,我需要将阈值设置得较低,这会导致很多不必要的行。如下所示:

在此处输入图像描述

我的目标是只找到彼此最远的线条,无论是垂直还是水平。结果应如下所示:

在此处输入图像描述

谢谢您的帮助!