从cv2.HoughLines数组中删除具有特殊值的行

时间:2019-10-03 18:13:22

标签: python arrays numpy opencv

我正在用opencv扫描图片中的线条。根据文档,一切都按计划进行。

lines = cv.HoughLines(edges,1,np.pi/180,200)
for line in lines:
    rho,theta = line[0]

我的图片有很多行,我只想在做水平线之前先做

for line in lines:

但是由于条目是嵌套的,所以找不到删除元素的正确解决方案。 行0 = 0的所有条目应保留在数组行中。

我试图修改此线程numpy delete list element from list of lists的解决方案,但元素不在列表列表中。单个元素在列表列表中。

示例:我希望第四个元素是剩下的唯一元素。

lines = ([[564.,1.57079637]],[[566.,1.57079637]],[[547.,1.57079637]],[[549.,0]],[[549.,1.57079637]],[[496.,1.57079637]])

1 个答案:

答案 0 :(得分:0)

您的示例lines是嵌套列表的元组。但是,cv.HoughLines的返回值是一个形状为(n,1,2)的numpy数组。为了使cv.HoughLines成为可行的示例,我们将使用lines = np.array(([[564.,1.57079637]],[[566.,1.57079637]],[[547.,1.57079637]],[[549.,0]],[[549.,1.57079637]],[[496.,1.57079637]]))

您可以使用列表理解:

lines = np.array([x for x in lines if x[0][1] == 0])

结果:

array([[[549.,   0.]]])