2016-06-29 3 views
0

待機! 「harrumph」しdownvoteする前に、これは繰り返される質問のようですが、私は他の質問を見て、彼らは実際に私のユースケースに適合しません。cv2の配列のナンキンフラットアレイ

私はcv2を使って画像を1つずつリストに読み込み、それらの上にクラシファイアを実行することを意図していました。例えば:私が望んで本当にないです

array([array([43, 25, 8, ..., 70, 68, 50], dtype=uint8), 
     array([ 24, 40, 16, ..., 182, 183, 167], dtype=uint8), 
     array([ 39, 35, 34, ..., 117, 114, 106], dtype=uint8), ..., 
     array([31, 50, 41, ..., 16, 16, 10], dtype=uint8), 
     array([ 14, 17, 15, ..., 95, 109, 105], dtype=uint8), 
     array([101, 102, 122, ..., 178, 187, 214], dtype=uint8)], dtype=object) 

lst = [] 

for picture in directory: 
    img = cv2.imread(picture) 
    img = img.flatten() # because classifiers require it to be flat 
    lst.append(img) 

これはLST配列はそうのようなものになりました。私はlstが(10000,311520)配列をクラスターに投げることができるようにしたかったが、今度は(10000)の配列で、個々の要素は形状(311520)である。

私は試したnp.flatten(doh)、np.concatenate、np.hstack/vstack。誰も助けてくれません。

何か不足しているものがありますか?これは正しいことですか?

ご協力いただきありがとうございます。 :)

+0

*すべてのサブアレイの形状は '(311520、)'ですか? – user2357112

答えて

0

ここに提案があります。平坦化後にすべてのイメージが実際に同じサイズである場合にのみ機能します。

lst = [] 
for picture in directory: 
    img = cv2.imread(picture) 
    img = img.flatten() # because classifiers require it to be flat 
    if lst = []: 
     lst = img 
    else: 
     lst = concatenate((lst, [img]), axis=0)