質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1729閲覧

RGBで読み込んだデータを.npyで保存したい

tenki3

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/07/29 11:54

編集2020/07/29 11:56

前提・実現したいこと

https://qiita.com/kojikoji_ksnv/items/12dfe9075cb1dd3afe59

上記の記事を参考にして画像認識を行おうとしたところ、.npyでデータを保存することができませんでした。RGBでデータを読み込んだことが原因のようですが、解決策を教えていただきたいです。

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-6-0e9f24f0d2a3> in <module> 53 54 #データを保存する ---> 55 np.save("C:/data/0729_data.npy", xy) <__array_function__ internals> in save(*args, **kwargs) ~\anaconda3\lib\site-packages\numpy\lib\npyio.py in save(file, arr, allow_pickle, fix_imports) 549 550 try: --> 551 arr = np.asanyarray(arr) 552 format.write_array(fid, arr, allow_pickle=allow_pickle, 553 pickle_kwargs=pickle_kwargs) ~\anaconda3\lib\site-packages\numpy\core\_asarray.py in asanyarray(a, dtype, order) 136 137 """ --> 138 return array(a, dtype, copy=False, order=order, subok=True) 139 140 ValueError: could not broadcast input array from shape (1500,250,250,3) into shape (1500)

該当のソースコード

python

1from PIL import Image 2import os, glob 3import numpy as np 4import random, math 5train_dir = "C:/dataset_train" 6test_dir = "C:/dataset_test" 7 8# 種類 9categories = ["カテゴリ1","カテゴリ2", "カテゴリ3"] 10 11image_size =250 12 13 14# 画像データ用配列 15X = [] 16# ラベルデータ用配列 17Y = [] 18 19#画像データごとにadd_sample()を呼び出し、X,Yの配列を返す関数 20def make_sample(files): 21 global X, Y 22 X = [] 23 Y = [] 24 for cat, fname in files: 25 add_sample(cat, fname) 26 return np.array(X), np.array(Y) 27 28def add_sample(cat, fname): 29 img = Image.open(fname) 30 img = img.convert("RGB") 31 img = img.resize((image_size, image_size ) , 3 ) 32 data = np.asarray(img) 33 X.append(data) 34 Y.append(cat) 35 36#学習用画像 37trainfiles = [] 38#テスト用画像 39testfiles = [] 40 41for idx, cat in enumerate(categories): 42 image_dir = train_dir + "/" + cat 43 files = glob.glob(image_dir + "/*.jpg") 44 for f in files: 45 trainfiles.append((idx, f)) 46 47for idx, cat in enumerate(categories): 48 image_dir = test_dir + "/" + cat 49 files = glob.glob(image_dir + "/*.jpg") 50 for f in files: 51 testfiles.append((idx, f)) 52 53X_train, y_train = make_sample(trainfiles) 54X_test, y_test = make_sample(testfiles) 55xy = (X_train, X_test, y_train, y_test) 56 57 58#データを保存する 59np.save("C:/data/0729_data.npy", xy)

試したこと

img = img.resize((image_size, image_size )) を
img = img.resize((image_size, image_size ),3) に変更して実行

補足情報(FW/ツールのバージョンなど)

python3
anaconda

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2020/07/29 22:44

元記事のコードでも同じエラーが発生しますので、元記事自体に問題があるものと思われます。 そのコードがどのように動作するのかが不明なので、作者に問い合わせてみてはいかがでしょうか?
tenki3

2020/07/30 06:48

コード自体に問題がありましたか。 アドバイスをありがとうございます。 他の記事を参考にしたところうまくいったので、ひとまず解決とさせていただきます。
guest

回答1

0

自己解決

https://qiita.com/tomo_20180402/items/e8c55bdca648f4877188

こちらの方の記事を参考に行ったところ、問題なく動きました。

投稿2020/07/30 06:37

tenki3

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問