我正在用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]])
答案 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.]]])