我有(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)
。
由于这种差异,我认为drawContours不适用于cnt
,但我不知道为什么会发生这种情况。编辑: 轮廓由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)
你是如何创建'cnt'或'contoure'的? – 2014-10-22 09:40:08
我编辑了我原来的帖子。我的答案是编辑。 – recodeFuture 2014-10-22 10:46:12
我找到了解决方案。 all_cnt必须是int32类型! – recodeFuture 2014-10-22 11:26:32