【发布时间】:2020-10-07 17:55:26
【问题描述】:
我正在从事一个机器视觉项目。通过在图片上反射激光,我在 Opencv 的帮助下检测到激光落在图片上的像素。我将这些像素值保存为 2d numpy 数组。但是,我想通过确定x轴值相同的像素值并取它们的平均值来使x,y值唯一。像素值顺序保存在numpy数组中。
例如:
[[659 253]
[660 253]
[660 256]
[661 253]
[662 253]
[663 253]
[664 253]
[665 253]]
首先,我的目标是找出每个列表的第一个元素相同的所有列表。使用 Opencv 时,像素值保存在 numpy 数组中以更有用。我正在尝试自己编写索引方法。我为自己创建了一个 numpy 数组以使其更简单。
x = np.array([[1, 2], [1, 78], [1, 3], [1, 6], [4, 3], [5, 6], [5, 3]], np.int32)
我按照这样的方法从x数组的列表中查找第一个元素相同的值。
for i in range (len (x)):
if x [i]! = x [-1] and x [i] [0] == x [i + 1] [0]:
print (x [i], x [i + 1])
我想通过浏览 x 数组列表来检查第一个列表中的第一个元素是否在下一个列表中。为了不遇到索引超出范围错误,我使用了x [i]! = x [-1]。我期待这个循环将以下结果返回给我。
[1,2] [1,78]
[1,78] [1,3]
[1,3] [1,6]
[5,6] [5,3]
我稍后会从列表中删除重复的元素,但我得到了
ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()
我不熟悉 numpy 数组,所以我无法得到我想要的解决方案。是否可以使用 numpy 数组方法获得我想要的结果?感谢您的宝贵时间。
【问题讨论】:
-
显示您用于获取该错误的方法。
-
我在问 numpy 数组方法。不是python方法。我没有使用任何 numpy 数组方法。
-
你能说明你做了什么来得到这个错误吗?它将帮助我帮助您解决这个问题。这通常也是良好的做法和普遍的礼貌。它不必是什么花哨的东西。我只是想知道你的头在哪里可以这么说。
-
我只是试试这个。 for i in range(len(x)): if x[i] != x[-1] and x[i][0] == x[i+1][0]: print(x[i], x[i+1])
-
我已经起草了一个答案。我会在你edited 发帖后发布。