0

我刚从 Mac 切换到 Windows,在我的正确项目中,我正在编写一个 ML 程序来评估图片。

我将它们标记在 Excel 文件中,并且导入效果很好。但是,当我导入我的图片以将它们放入张量时,它不起作用。我列出了所有图片以确保我使用正确的路径并且它似乎工作正常。我什至将导入文件的名称更改为适合我的 dic 中的文件。我真的很难找到我的错误并希望这里有人可以帮助我解决这个问题!

import os
os.getcwd()
a='C:/Users/sunja/Documents/Daten/Bilddaten_zugeschnitten'
os.listdir(a)

'._1_2_18.jpg',

'._1_2_19.jpg',

'._1_2_20.jpg',

'._1_2_21.jpg',

'._1_2_22.jpg',

'._1_2_23.jpg',

'._1_2_24.jpg',

等等

import os
import shutil
import numpy as np
import pandas as pd
from sklearn.utils import shuffle
from openpyxl import load_workbook
import random
random.seed(40)

import numpy as np
np.random.seed(40)  
import tensorflow as tf
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.layers import Convolution2D, MaxPooling2D
from keras.utils import np_utils
from keras.datasets import mnist


path_labels = 'C:/Users/sunja/Documents/Daten/Labels.xlsx'


#import label data and construct label data frame
workbook = load_workbook(path_labels)
features = []
labels = []
for row in range (2, workbook['Tabelle1' ].max_row+1):
        cell_Bezeichnung = workbook ['Tabelle1']["{}{}".format('A', row)     ].value
        cell_Label = workbook['Tabelle1']["{}{}".format("B",row)].value

        features.append('._'+str(cell_Bezeichnung)+'.jpg')
        labels.append(str(cell_Label))

    data = pd.DataFrame(data={'Datei': features, 'Label': labels})
    data = shuffle(data)
    data = data.reset_index(drop=True)
    print(data.head())



    Datei Label

0 ._1_2_22.jpg 2

1 ._1_1_22.jpg 1

2 ._1_0_07.jpg 0

3 ._1_1_16.jpg 1

4 ._1_1_25.jpg 1

使用 TensorFlow 后端。

这是工作部分。现在,当我从文件夹中导入图片时,它说它们不存在。为什么呢?

from keras.preprocessing import image                  
from tqdm import tqdm
os.environ['KMP_DUPLICATE_LIB_OK']='True'
path_images='C:/Users/sunja/Documents/Daten/Bilddaten_zugeschnitten'
def path_to_tensor(img_path):
    # loads RGB image as PIL.Image.Image type
    img_path = path_images+img_path

    img = image.load_img(img_path.item(0), target_size=(256, 256))     #Variation mit mehr als 100x100 pixel
    #tf.image.rgb_to_grayscale(img,name=None)

    # convert PIL.Image.Image type to 3D tensor with shape (224, 224, 3)
    x = image.img_to_array(img)
    # convert 3D tensor to 4D tensor with shape (1, 224, 224, 3) and return 4D tensor
    return np.expand_dims(x, axis=0)


def paths_to_tensor(img_paths):
    list_of_tensors = [path_to_tensor(img_path) for img_path in tqdm(img_paths)]
    return np.vstack(list_of_tensors)

    #ImageFile.LOAD_TRUNCATED_IMAGES = True
from IPython.display import display
from PIL import Image

# pre-process the data for Keras
tensors = paths_to_tensor(files.values).astype('float32')/255

它甚至不开始导入,而是在第一个文件处停止。

FileNotFoundError:[Errno 2] 没有这样的文件或目录:'C:/Users/sunja/Documents/Daten/Bilddaten_zugeschnitten._1_2_22.jpg'

我错过了什么吗?提前致谢!

4

2 回答 2

3

我想您的目录路径和文件名之间缺少“/”。假设您在函数的img_path参数中传递文件名path_to_tensor(),请尝试替换img_path = path_images+img_path为,

img_path = os.path.join(path_images, img_path)

或者

img_path = path_images+'/'+img_path
于 2019-03-09T18:04:27.523 回答
0

我找到了解决方案。我似乎是一个 PIL 错误。5.3版本有问题,所以我降级到5.2。它现在工作!谢谢!

于 2019-03-10T20:01:47.607 回答