0

私は自分のデータベースにある複数の画像のディスクリプタを抽出しようとしています。使用されたメソッドは私にキーポイントの行列とすべてのイメージの記述子の行列を与えます。したがって、それらをsigle行列にグループ化したいと思います。Python 3.5で複数の画像から取得したすべてのディスクリプタを保存します

私はループの上に試してみた:第1の画像の記述子であるので、私はその行列に他の記述子を連結するためkp_allとdes_allがcorrectlly初期化され

kp_all = numpy.hstack((kp_all, kp)) 
des_all = numpy.hstack((des_all, des)) 

を。指定されたエラーは次のとおりです。

ValueError: all the input array dimensions except for the concatenation 
axis must match exactly 

ベクトルの次元がある:

Processing image.... 
dimension kp_all and des_all (10, 7) (10, 32) 
Processing image.... 
dimension kp and des (46, 7) (46, 32) 
Processing image.... 
dimension kp and des (17, 7) (17, 32) 

誰もが任意のアイデアを持っていますか?ありがとうございました!!!

+0

を使用することができます。あなたは 'kp_all'に(10、7)を持っています。だから、 'kp'は(10、n) – kmario23

+0

でなければならないかもしれません。kpとkp_allを比較して10の最も一般的な点を取るべきでしょうか?それは理にかなっている? – Eric

+0

しかし、あなたのデータからは、代わりに 'np.vstack'を使うのが良いでしょう。あなたはすべてのポイントを保持することができますこの方法。単に 'hstack'を' vstack'で置き換えてください。 – kmario23

答えて

1

と変数の大きさを観察しますkp_alldes_allkpdes

寸法kp_allとdes_all(10、7)(10、32)
寸法KPとDES(46、7)(46、32)
寸法KPとDES(17、7)(17、32)

私たちは、外形寸法が一致している必要がありますhstack` `行うため、np.vstack

kp_all = np.vstack((kp_all, kp)) 
des_all = np.vstack((des_all, des)) 
0

私はちょうど空のリストを作成...解決策を見つけた:

kp_all = [] 
des_all = [] 

をし、ループ内のすべての記述を追加します。OPさんのコメントに基づいて

kp_all.append(kp) 
des_all.append(des) 
+0

これは巨大なサイズに対して非常に非効率的です。 – kmario23

+0

はい、わかります。しかし、データを.txtに保存するだけです。何か考えているなら、私に教えてください – Eric

関連する問題