0

私はPythonとNumpyを使って、同じピクセル次元のいくつかのイメージを取得し、2D配列を作成するため、配列の各行は1つのイメージを表し、各列は特定の場所。numpy配列でイメージを連結するpython

これを達成するには、イメージファイルを読み込んでnumpy.concatenateを使用しようとしました。コードは、私はこのコードを実行し、Xの形状は

場合、例えば(画像の数、高さX幅、3)

、この形式で毎回出てくる

#url of picture data 
X_p = data.link 
#list for storing the picture data 
X= [] 

#read in the image from the url, and skip poster with 404 error 
for url in X_p: 
    try: 
     loadimg = urllib.request.urlopen(url) 
     image_file = io.BytesIO(loadimg.read()) 
     img = Image.open(image_file) 

     #Concatenate to linearize 
     X.append(np.concatenate(np.array(img))) 

    #404 error 
    except urllib.error.HTTPError as err: 
     if err.code == 404: 
      continue 
     else: 
      raise 

#cast the list into numpy array  
X = np.array(X) 
#test to see if X is in correct dimension 
print(X.shape) 

あります私は私が必要なもの

が最後に3を取り除くことであり、私がいないとき、それは難しい(3、12、40000)結果が

で、200×200ピクセルの12の画像のURLを読み込みます3がどこから来るのかを理解することさえできます。

私は問題が、間違った場所に追加または連結していると想定しています。私がnp.concatenateを削除したとき、それは単に示されました(12,200,200,3)。

私はnumpy画像処理と連結をオンラインで検索しましたが、何が起こっているのかを説明し修正するものは何も実行しませんでした。

何かすべての助けがありがとうございます。このポストを読んで答える時間を費やしてくれてありがとうございます。

答えて

0

私は問題を理解しました。私は配列の次元に興味があったので、SOを検索して1次元の増分または減分を求める質問を探します。私は3が何のために立っていたのか説明したポストを走りました。

How can I save 3D array results to a 4D array in Python/numpy?

Image.open().convert("L") 

が私のために動作しませんでしたので、私はトリック

with Image.open().convert("L") as img 

を使用していた私は、forループの後にこの行を追加して、寸法の問題が修正されました。