我有 (x,y) 点用于轮廓线 ( cnt
)。通过将数据结构与findContours
返回值 ( contoure
) 的数据结构进行比较,我创建了看起来几乎相同的列表。
cnt
是 3D 数组contoure
的列表,并且是 3D 数组的列表。
我得到以下结果:
len(cnt) = 140
len(contoure) = 140
cnt.shape = (20L,1L,2L)
contoure.shape = (20L,1L,2L)
np.size(cnt,0) = 140
np.size(contoure,0) = 140
np.size(cnt) = 5600
np.size(contoure) = 140
我不明白为什么我得到“元组索引超出范围” np.size(contoure,1)
(注意这contoure[i]
是 3D 数组!)但没有错误np.size(cnt,1)
以及为什么np.size(cnt) != np.size(contoure)
。
我认为 drawContourscnt
由于这种差异而无法使用,但我不知道为什么会发生这种情况。
编辑:轮廓是由 findContours() 调用创建的。我不确切知道cnt是如何创建的,因为我的朋友编写了这部分代码,我只得到以下形式的结果:all_cnt:
x11 x12 ... x1n
y11 y12 ... y1n
.
.
xm1 xm2 ... xmn
ym1 ym2 ... ymn
其中 x1,y1 是描述第一个轮廓的 n 对。比我使用以下代码:
cnt=[]
for i in range(140):
a=all_cnt[2*i:2*i+2]
a = np.reshape(np.ravel(a,order='F'),(20,1,2))
cnt.append(a)