【发布时间】:2017-01-13 06:14:37
【问题描述】:
我有一个数据结构 Line,其轮廓是:
class Line :
x1
y1
x2
y2
m
c
id
# other functions pertaining to the class
在主循环中,我有一个此时已填充的行列表。
我想要做的是合并 m 和 c 值非常接近的线,所以我从检测中得到单行而不是多行
for line1 in allLines:
consolidateLines = []
for line2 in allLines:
if line1.id() == line2.id():
continue;
if abs(line1.m() - line2.m()) < SomeValue:
if abs(line1.c() - line2.c()) < someOtherValue:
consolidateLines.append(line2);
consolidateLines.append(line1);
# I want to remove all the lines in consolidatedLines.
# But since this is already in the loop, that is a problem.
# How do I accomplish this.
解释问题: 我有一个行列表。由于这些线条是使用计算机视觉算法(霍夫变换)检测的,因此其中一些线条彼此非常接近。那并不理想。因此,我正在尝试合并所有非常接近且具有紧密方向的线条。如果一行由 y=mx + c 表示,我正在尝试:
- 合并列表中具有几乎相同 m 和 c 值的所有行(可能有 5 行靠近)并为这些行获取一行。
- 删除所有合并的行
- 添加我在列表中得到的新行。
【问题讨论】:
-
this:
for abs(line1.c() - line2.c()) < someOtherValue:似乎是一个错误。我不清楚这是要做什么。 -
@StephenRauch:是的。对不起,那是我的错!
-
抱歉,我很难理解您要做什么。你能简单解释一下吗?你有带有
Line对象的AllLines。你想做什么? -
@iTayb:添加了解释。希望能更清楚
标签: python python-3.x computer-vision computational-geometry