我有(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