【问题标题】:Image File Import Failed图片文件导入失败
【发布时间】:2019-07-31 11:48:33
【问题描述】:

我刚从 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'

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

【问题讨论】:

  • 实际文件名是“Bilddaten_zugeschnitten._1_2_22.jpg”吗?当您尝试运行(Windows + 运行)并输入确切路径时会发生什么?也许是“。”基本名称和“_1_2_22.jpg”之间不应该存在?
  • 欢迎使用 SO,它通过将我们所有的代码按原样抛出问题来工作;请花点时间阅读How to askminimal reproducible example,以及为什么a wall of code isn't helpful
  • 嗨。我试图提供尽可能多的输入。到目前为止,这还不是我的所有代码,只是抛出错误的部分。但是,我会记住以后的帖子!

标签: python pandas numpy tensorflow keras


【解决方案1】:

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

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

img_path = path_images+'/'+img_path

【讨论】:

  • 我尝试了这两个选项,但它们都不起作用。如果我通过 cmd 打开路径,它只会向我显示一个比我想要的文件夹高两级的文件夹。这怎么可能?
  • 你在 path_to_tensor() 函数的 img_path 参数中传递了什么?另外,能不能把上面赋值语句后的img_path的值打印出来分享一下?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多