在OpenCV 3中,函数goodFeaturesToTrack
返回以下形式的数组
[[[1, 2]]
[[3, 4]]
[[5, 6]]
[[7, 8]]]
将该数组转换为Python列表后,我得到了
[[[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]]]
虽然这是一个列表,如果你看到它还有一对括号,当我尝试通过A [0] [1]访问一个元素时,我收到一个错误。为什么数组和列表都有这种形式?我该如何解决?
答案 0 :(得分:1)
因为你有一个3d数组,第二轴有一个元素:
In [26]: A = [[[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]]]
In [27]: A[0]
Out[27]: [[1, 2]]
当你想通过A[0][1]
访问第二项时,它会引发一个IndexError:
In [28]: A[0][1]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-28-99c47bb3f368> in <module>()
----> 1 A[0][1]
IndexError: list index out of range
您可以使用np.squeeze()
来缩小尺寸,并将数组转换为2D数组:
In [21]: import numpy as np
In [22]: A = np.array([[[1, 2]], [[3, 4]], [[5, 6]], [[7, 8]]])
In [33]: A = np.squeeze(A)
In [34]: A
Out[34]:
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])