Загрузка изображений в google colab

В моем Jupyter Notebook есть следующий код для загрузки изображения в Colab:

from google.colab import files
uploaded = files.upload()

Мне предлагается ввести файл. Который загружается.

Я проверяю, что загрузка файла прошла успешно, используя:

!ls

и вижу, что он там есть.

Я проверяю текущий рабочий каталог, используя:

import os
os.getcwd()

и это говорит мне, что это /content

теперь, любой из следующих вызовов...

cv2.imread(img_path, 1)
cv2.imread(img_path, 0)
cv2.imread(img_path)

не удается загрузить файл.

Они также не работают независимо от того, использую ли я только имя файла или полный путь.

Есть мысли о том, что происходит?

Решение

Используйте эту функцию для загрузки файлов. Она также сохранит их.

def upload_files():
  from google.colab import files
  uploaded = files.upload()
  for k, v in uploaded.items():
    open(k, 'wb').write(v)
  return list(uploaded.keys())

Обновление

Теперь (сентябрь 2018 года) на левой панели есть вкладка "Файлы", которая позволяет просматривать и загружать файлы. Вы также можете загружать файлы, просто дважды щелкнув по именам файлов.

Комментарии (0)

Colab google: загрузка изображений в несколько подкаталогов:. Если вы хотите загрузить изображения (или файлы) в несколько поддиректорий с помощью Colab google, пожалуйста, выполните следующие шаги:

  • Предположим, что ваши изображения (файлы) разделены на 3 поддиректории (train, validate, test) в основной директории под названием (dataDir): 1- Запилите папку (dataDir) в (dataDir.zip). 2- Запишите этот код в ячейку Colab:

    from google.colab import files uploaded = files.upload()

3- Нажмите на 'Choose Files' и загрузите (dataDir.zip) с вашего ПК в Colab. Теперь (dataDir.zip) загружен на ваш google drive! 4- Давайте распакуем папку (dataDir.zip) в папку под названием (data), написав этот простой код:

import zipfile
import io
data = zipfile.ZipFile(io.BytesIO(uploaded['dataDir.zip']), 'r')
data.extractall()

5- Теперь все готово, давайте проверим это, распечатав содержимое папки (data):

data.printdir()

6- Затем, чтобы прочитать изображения, посчитать их, разделить их и поиграть с ними, пожалуйста, напишите следующий код:

train_data_dir = 'data/training'  
validation_data_dir = 'data/validation'  
test_data_dir = 'data/test' 
target_names = [item for item in os.listdir(train_data_dir) if os.path.isdir(os.path.join(train_data_dir, item))]
nb_train_samples = sum([len(files) for _, _, files in os.walk(train_data_dir)])  
nb_validation_samples = sum([len(files) for _, _, files in os.walk(validation_data_dir)])
nb_test_samples = sum([len(files) for _, _, files in os.walk(test_data_dir)])
total_nb_samples = nb_train_samples + nb_validation_samples + nb_test_samples

nb_classes = len(target_names)      # number of output classes

print('Training a CNN Multi-Classifier Model ......')
print('\n - names of classes: ', target_names, '\n - # of classes: ', nb_classes)
print(' - # of trained samples: ', nb_train_samples, '\n - # of validation samples: ', nb_validation_samples,
      '\n - # of test samples: ', nb_test_samples,
       '\n - total # of samples: ', total_nb_samples, '\n - train ratio:', round(nb_train_samples/total_nb_samples*100, 2),
      '\n - validation ratio:', round(nb_validation_samples/total_nb_samples*100, 2),
      '\n - test ratio:', round(nb_test_samples/total_nb_samples*100, 2),
     ' %', '\n - # of epochs: ', epochs, '\n - batch size: ', batch_size)

7- Вот и все! Наслаждайтесь!

Комментарии (2)

Я предполагаю, что вы могли записать файл не из памяти?

Попробуйте использовать приведенный ниже код после загрузки:

with open("wash care labels", 'w') as f:
    f.write(uploaded[uploaded.keys()[0]])

замените "этикетки для стирки.xx" на имя вашего файла. Это запишет файл из памяти. затем попробуйте вызвать файл.

Надеюсь, это сработает.

Комментарии (1)