等高線 ( cnt
) の (x,y) ポイントがあります。findContours
データ構造を戻り値 ( )のデータ構造と比較すると、contoure
ほとんど同じように見えるリストが作成されました。
cnt
は 3D 配列のリストで、 は 3D 配列contoure
のリストです。
次の結果が得られます。
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
「範囲外のタプルインデックス」を取得する理由がわかりません(これは 3D 配列np.size(contoure,1)
であることに注意してください!) 。contoure[i]
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)