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

我正在用 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但元素不在列表列表中的解决方案。单个元素位于列表列表中。


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


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



动漫人物
浏览 92回答 1
1回答

拉丁的传说

您的示例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.]]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python