前提・実現したいこと
リンク内容
こちらを参考にプログラムを作っていたのですが、Permission deniedというエラーが発生し解決できません。
ここに質問の内容を詳しく書いてください。
発生している問題・エラーメッセージ
PermissionError Traceback (most recent call last) <ipython-input-12-093ab5cbb48a> in <module> 50 train = allfiles[0:th] 51 test = allfiles[th:] ---> 52 X_train, y_train = make_sample(train) 53 X_test, y_test = make_sample(test) 54 xy = (X_train, X_test, y_train, y_test) <ipython-input-12-093ab5cbb48a> in make_sample(files) 23 Y = [] 24 for cat, fname in files: ---> 25 add_sample(cat, fname) 26 return np.array(X), np.array(Y) 27 <ipython-input-12-093ab5cbb48a> in add_sample(cat, fname) 28 #渡された画像データを読み込んでXに格納し、また、画像データに対応するcategoriesのidxをY格納する関数 29 def add_sample(cat, fname): ---> 30 img = Image.open(fname) 31 img = img.convert("RGB") 32 img = img.resize((150, 150)) c:\users\sern3\appdata\local\programs\python\python36\lib\site-packages\PIL\Image.py in open(fp, mode) 2876 2877 if filename: -> 2878 fp = builtins.open(filename, "rb") 2879 exclusive_fp = True 2880 PermissionError: [Errno 13] Permission denied: 'C:\Users\sern3\Desktop\petgazou\お茶'
該当のソースコード
python
1#ラベリングによる学習/検証データの準備 2 3from PIL import Image 4import os, glob 5import numpy as np 6import random, math 7 8#画像が保存されているルートディレクトリのパス 9root_dir = r"C:\Users\sern3\Desktop\petgazou" 10# 商品名 11categories = ["お茶","コーラ","水","紅茶", 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 28#渡された画像データを読み込んでXに格納し、また、画像データに対応するcategoriesのidxをY格納する関数 29def add_sample(cat, fname): 30 img = Image.open(fname) 31 img = img.convert("RGB") 32 img = img.resize((150, 150)) 33 data = np.asarray(img) 34 X.append(data) 35 Y.append(cat) 36 37#全データ格納用配列 38allfiles = [] 39 40#カテゴリ配列の各値と、それに対応するidxを認識し、全データをallfilesにまとめる 41for idx, cat in enumerate(categories): 42 image_dir = root_dir + "\" + cat 43 files = glob.glob(image_dir) 44 for f in files: 45 allfiles.append((idx, f)) 46 47#シャッフル後、学習データと検証データに分ける 48random.shuffle(allfiles) 49th = math.floor(len(allfiles) * 0.8) 50train = allfiles[0:th] 51test = allfiles[th:] 52X_train, y_train = make_sample(train) 53X_test, y_test = make_sample(test) 54xy = (X_train, X_test, y_train, y_test) 55#データを保存する(データの名前を「pet_data.npy」としている) 56np.save(r"C:\Users\sern3\Desktop\pet_data.npy", xy)
試したこと
ルートディレクトリの確認
ファイルが読み取り専用になっているか確認
補足情報(FW/ツールのバージョンなど)
windows
python3.6
回答2件
あなたの回答
tips
プレビュー