问题标签 [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.
opencv - OpenCV使用相机检测电视屏幕
我正在使用 iPhone 摄像头来检测电视屏幕。我目前的方法是逐像素比较后续帧并跟踪累积差异。结果是二进制图像,如图所示。
对我来说,这看起来像一个矩形,但 OpenCV 不这么认为。它的侧面并不完全笔直,有时甚至会有更多的颜色渗出,使检测变得困难。这是我试图检测矩形的 OpenCV 代码,因为我对 OpenCV 不是很熟悉,所以它是从我找到的一些示例中复制而来的。
经过 Canny-step 之后,图像如下所示:
对我来说似乎很好,但由于某种原因没有检测到矩形。谁能解释我的参数是否有问题?
我的第二种方法是使用 OpenCV Hough 线检测,基本上使用与上面相同的代码,对于 Canny 图像,然后我调用 HoughLines 函数。它给了我很多行,因为我必须降低阈值来检测垂直线。结果如下所示:
问题是有很多行。如第一张图片所示,如何找出与蓝色矩形边相接触的线条?
还是有更好的方法来检测屏幕?
python - 查找线条并通过鼠标单击为它们着色
@ALL 这是对原始问题的编辑,以使该主题更加清晰。
问题陈述
- 假设有一个工业 P&ID 图。
- 旨在仅对过程重要的一些线条着色。
- 用户只应单击(鼠标左键单击)线段以使其着色。
问题方法
我是编程新手-> 使用 Python (3.5) 来尝试一下。我看到它的算法是这样的:
- 该图将采用 .pdf 格式。因此,我可以使用 PIL ImageGrab 或将 .pdf 转换为 .png,如本例所示
- 该算法将搜索鼠标单击周围的像素,然后将其与相同大小的另一部分(假设是 6x3 像素的条带)进行比较,但向左/向右一步(可能是 1-5 像素)
- 检查它们差异的平均值将告诉我们两条条带是否相同
- 这样算法应该找到行尾、箭头、角或其他元素
- 一旦找到,记录位置并绘制标记线,用户应该选择另一条线
总结
- 点击想要的线路
- 围绕鼠标单击抓取图像的一小部分
- 检查线条是水平的还是垂直的
- 裁剪给定大小的水平/垂直切片
- 查找行尾并记录行尾位置
- 在两个找到的位置之间画一条特定颜色的线(比如说绿色)
- 等待下一行被选中并重复
其他想法
- 附上您可以找到两张示例图像的图片以及我想要实现的目标。
- 尝试使用此处找到的方法在切片中找到“洞”:OpenCV to find line endings
- 坚持 ImageGrab 例程或类似的东西没有严格的规定
- 如果您知道我可以使用的其他策略,请随时发表评论
- 欢迎任何建议并真诚感谢
示例图片:
期望的结果(在 Paint 中修改):
使用我迄今为止尝试过的工作为帖子添加更新
我对原始代码做了一些修改,所以我将在下面发布。注释中的所有内容要么用于调试,要么用于解释。非常感谢您的帮助!不要害怕干预。
下面是我得到的结果。这不是我所希望的,但我觉得自己走在了正确的轨道上。我真的可以使用一些帮助来查找条带中的像素位置并使其相对于大图片像素位置。
另一个类似的图像,质量更好,但也带来了更多的问题。
python - OpenCV 的 HoughLines 以什么顺序列出 [rho,theta] 矩阵中检测到的线?
当给定的带有线条的图像被传递到 OpenCV 的 HoughLine 变换时,它会返回一个 rho 和 theta 对的列表,每对定义一条单独的线。在这个 rho,theta 对列表中列出的行的顺序是什么。
例如,当这个 8 行的 图像在 python 中使用时,8 行的图像
接下来,为八行返回 rho,theta 矩阵。
在这个矩阵中列出的行的顺序是如何由 openCV 确定的?
distance - Netlogo:你是如何在直线上找到距离的?
我知道距离测量半径的距离,但是你怎么能找到乌龟和直接在它们前面的补丁之间的距离(补丁可以根据你正在查看的补丁而变化)谢谢
image - 图像检测中的线和边缘有什么区别?
我们一直在学习像 Sobel 和 Roberts 的卷积矩阵这样的方法来检测图像中的边缘,并扩展到 Canny 方法来清除它们。但是现在,我们正在学习“线”检测,而不是“边缘”检测——使用霍夫变换等方法。
问题是 - 我什至不知道如何概念化“线”和“边缘”之间的区别。有人可以在不使用复杂数学方程等的情况下向我解释这种差异吗?
algorithm - 检测图像中投影矩形区域的最稳健方法是什么?
IOS 11 包含一个文档扫描仪,并使用内部类VNDetectRectanglesRequests
来查找图像中矩形的四个角。
这是进一步处理的第一步,例如扭曲投影矩形以获得所有内角均为 90° 的扫描文档的直线图像。
用于该计算机视觉问题的算法是什么?首先使用霍夫变换检测线,然后使用 FAST 检测角点?使用什么策略使其快速和健壮?