在python中,我使用hough线来检测图像上的线条。检测线条效果很好,但source image是手绘的,在每个线段上产生许多直线。我想结合具有相似斜率和y截距的线来重新创建图像的整体结构。 我知道我可以改变hough line参数(threshold,min_length,max_gap)来制作更长的直线但是我想保留hough line函数的粒度输出并用输出的行重新构造
图像的霍夫线看起来像this
我当前的输出是一个带有起点/终点的线,斜率和y轴截距的字典:
{'slope': -2.0, 'start': (438, 317), 'yintercept': 167.0, 'end': (457, 279)}
{'slope': -8.0, 'start': (580, 414), 'yintercept': 1442.0, 'end': (582, 398)}
{'slope': -5.333333333333333, 'start': (438, 375), 'yintercept':
{'slope': -1.5, 'start': (492, 215), 'yintercept': 142.5, 'end': (502, 200)}
{'slope': 0.0, 'start': (524, 316), 'yintercept': 152.0, 'end': (536, 316)}
{'slope': 3.0, 'start': (533, 238), 'yintercept': -232.0, 'end': (527, 220)}
{'slope': -1.9142857142857144, 'start': (450, 292), 'yintercept': 164.37142857142857, 'end': (485, 225)}
{'slope': 0.0, 'start': (467, 317), 'yintercept': 153.0, 'end': (523, 317)}
原始输出中有40行,但我想合并为6行。
我的问题:
我可以按照确切的斜率进行分组:
grouper = itemgetter("slope")
result = []
for key, grp in groupby(sorted(line_dict, key = grouper), grouper):
result.append(list(grp))
对此有任何帮助表示赞赏。