图像文件导入失败

时间:2019-03-09 17:49:59

标签: python pandas numpy tensorflow keras

我刚刚从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:[错误2]没有此类文件或目录:'C:/Users/sunja/Documents/Daten/Bilddaten_zugeschnitten._1_2_22.jpg'

我错过了什么吗? 预先感谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我找到了解决方案。我似乎遇到了一个PIL错误。 5.3版本存在漏洞,因此我降级为5.2。 现在工作了! 谢谢!