问题标签 [straight-line-detection]

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 投票
0 回答
103 浏览

image-processing - 用于线检测的约束霍夫变换

我需要检测图像中的直线(脊),我事先知道它们的方向(在一定程度上)。

我正在使用 OpenCV 和 HoughLines 函数。

有没有办法通过

  1. 仅使用梯度方向准垂直于所需方向的边缘像素,

  2. 将累积和搜索限制在小范围的角度。

我在 OpenCV 3.0 中找不到这样的选项

一个典型的图像:

在此处输入图像描述

0 投票
1 回答
167 浏览

image-processing - 检测笔记本纸上的画线和点

我有一张笔记本的图片(带有正方形),并且像描述中一样在其中绘制了线条和点。输出应该是一个数据结构,其中包含有关边界和点的信息。怎样才能做到这一点?如果可能,程序应该动态处理这个(给定一个视频)。

例子

0 投票
0 回答
124 浏览

python - 灰度图像的图像线检测..不工作

输入图像

这是一张 3000x3000 灰度图像,我想获取图像中对角线分量的坐标。

我尝试了霍夫变换和 pylsd (线段检测),但它们都没有像我希望的那样工作。以下是一些不满意的结果:

结果垃圾太多

我想通过使用一个简单的参数来获得最大数量的真实对角线和最少数量的垃圾,例如可以将集群标记为一条线的长度。任何建议或提示将不胜感激。

首选 Python 或 R(不是 matlab)

0 投票
1 回答
1237 浏览

opencv - OpenCV使用相机检测电视屏幕

我正在使用 iPhone 摄像头来检测电视屏幕。我目前的方法是逐像素比较后续帧并跟踪累积差异。结果是二进制图像,如图所示。

原始图像

对我来说,这看起来像一个矩形,但 OpenCV 不这么认为。它的侧面并不完全笔直,有时甚至会有更多的颜色渗出,使检测变得困难。这是我试图检测矩形的 OpenCV 代码,因为我对 OpenCV 不是很熟悉,所以它是从我找到的一些示例中复制而来的。

经过 Canny-step 之后,图像如下所示:

Canny 步后的图像 对我来说似乎很好,但由于某种原因没有检测到矩形。谁能解释我的参数是否有问题?

我的第二种方法是使用 OpenCV Hough 线检测,基本上使用与上面相同的代码,对于 Canny 图像,然后我调用 HoughLines 函数。它给了我很多行,因为我必须降低阈值来检测垂直线。结果如下所示:

霍夫线

问题是有很多行。如第一张图片所示,如何找出与蓝色矩形边相接触的线条?

还是有更好的方法来检测屏幕?

0 投票
1 回答
698 浏览

python - 查找线条并通过鼠标单击为它们着色

@ALL 这是对原始问题的编辑,以使该主题更加清晰。

问题陈述

  • 假设有一个工业 P&ID 图。
  • 旨在仅对过程重要的一些线条着色。
  • 用户只应单击(鼠标左键单击)线段以使其着色。

问题方法

我是编程新手-> 使用 Python (3.5) 来尝试一下。我看到它的算法是这样的:

  • 该图将采用 .pdf 格式。因此,我可以使用 PIL ImageGrab 或将 .pdf 转换为 .png,如本例所示
  • 该算法将搜索鼠标单击周围的像素,然后将其与相同大小的另一部分(假设是 6x3 像素的条带)进行比较,但向左/向右一步(可能是 1-5 像素)
  • 检查它们差异的平均值将告诉我们两条条带是否相同
  • 这样算法应该找到行尾、箭头、角或其他元素
  • 一旦找到,记录位置并绘制标记线,用户应该选择另一条线

总结

  • 点击想要的线路
  • 围绕鼠标单击抓取图像的一小部分
  • 检查线条是水平的还是垂直的
  • 裁剪给定大小的水平/垂直切片
  • 查找行尾并记录行尾位置
  • 在两个找到的位置之间画一条特定颜色的线(比如说绿色)
  • 等待下一行被选中并重复

其他想法

  • 附上您可以找到两张示例图像的图片以及我想要实现的目标。
  • 尝试使用此处找到的方法在切片中找到“洞”:OpenCV to find line endings
  • 坚持 ImageGrab 例程或类似的东西没有严格的规定
  • 如果您知道我可以使用的其他策略,请随时发表评论
  • 欢迎任何建议并真诚感谢

示例图片:

示例图像

期望的结果(在 Paint 中修改):

期望的结果(在 Paint 中修改)

使用我迄今为止尝试过的工作为帖子添加更新

我对原始代码做了一些修改,所以我将在下面发布。注释中的所有内容要么用于调试,要么用于解释。非常感谢您的帮助!不要害怕干预。

下面是我得到的结果。这不是我所希望的,但我觉得自己走在了正确的轨道上。我真的可以使用一些帮助来查找条带中的像素位置并使其相对于大图片像素位置。

另一个类似的图像,质量更好,但也带来了更多的问题。

0 投票
2 回答
1948 浏览

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

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

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

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

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

0 投票
1 回答
70 浏览

distance - Netlogo:你是如何在直线上找到距离的?

我知道距离测量半径的距离,但是你怎么能找到乌龟和直接在它们前面的补丁之间的距离(补丁可以根据你正在查看的补丁而变化)谢谢

0 投票
2 回答
3213 浏览

python - 在 Python 中使用 OpenCv 检测几乎直线

我正在使用 OpenCv 检测图像中的直线。下面是代码:

对于图像(PDF 的屏幕截图Image.jpg),我得到result.png)作为结果,这正是我想要的输出。

图片.jpg 在此处输入图像描述

结果.png 在此处输入图像描述

但是当我将下面的 Image Test.jpg作为输入时,我的算法无法正常工作。它给出以下错误:

我认为是因为在Test.jpg中水平线不是那么直(因为我通过手机的摄像头点击了它)而且如果我将minLineLength值更改为假设100不会显示上述错误但显示不完整的褪色线排。那么谁能告诉我我应该在我的算法中更改哪些参数以使其正常工作?

测试.jpg在此处输入图像描述

0 投票
3 回答
5074 浏览

image - 图像检测中的线和边缘有什么区别?

我们一直在学习像 Sobel 和 Roberts 的卷积矩阵这样的方法来检测图像中的边缘,并扩展到 Canny 方法来清除它们。但是现在,我们正在学习“线”检测,而不是“边缘”检测——使用霍夫变换等方法。

问题是 - 我什至不知道如何概念化“线”和“边缘”之间的区别。有人可以在不使用复杂数学方程等的情况下向我解释这种差异吗?

0 投票
0 回答
88 浏览

algorithm - 检测图像中投影矩形区域的最稳健方法是什么?

IOS 11 包含一个文档扫描仪,并使用内部类VNDetectRectanglesRequests来查找图像中矩形的四个角。

这是进一步处理的第一步,例如扭曲投影矩形以获得所有内角均为 90° 的扫描文档的直线图像。

用于该计算机视觉问题的算法是什么?首先使用霍夫变换检测线,然后使用 FAST 检测角点?使用什么策略使其快速和健壮?