【问题标题】:Loading images in google colab在 google colab 中加载图像
【发布时间】:2018-08-17 14:53:43
【问题描述】:

我的 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)

加载文件失败。

无论我使用的是文件名还是完整路径,它们也会失败。

有什么想法吗?

【问题讨论】:

标签: python opencv google-colaboratory


【解决方案1】:

使用此功能上传文件。它也会保存它们。

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 年 9 月),左侧窗格有一个“文件”选项卡,可让您轻松浏览文件和上传文件。也可以双击文件名下载。

【讨论】:

    【解决方案2】:

    Colab google:在多个子目录中上传图片: 如果您想通过 Colab google 上传多个子目录中的图片(或文件),请按照以下步骤操作: - 我假设您的图像(文件)在名为(dataDir)的主目录中分为 3 个子目录(训练、验证、测试): 1- 将文件夹 (dataDir) 压缩到 (dataDir.zip) 2- 在 Colab 单元格中编写此代码:

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

    3- 按“选择文件”并将 (dataDir.zip) 从您的 PC 上传到 Colab 现在(dataDir.zip)已上传到您的谷歌驱动器! 4- 让我们通过编写以下简单代码将文件夹(dataDir.zip)解压缩到名为(data)的文件夹:

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

    5- 现在一切准备就绪,让我们通过打印(数据)文件夹的内容来检查:

    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- 就是这样!享受吧!

    【讨论】:

    • 男士非常感谢您的回复。我正在做的事情中缺少的部分是使用 zip 文件。这样做将解决创建文件夹/子文件夹的问题!!!我会再试一次 :) 坦克。
    • 没问题!同时,您可以使用相同的功能上传(.py)文件,然后将其导入您的 colab notebook。
    【解决方案3】:

    在 colab 中破解上传图片文件!

    https://colab.research.google.com/

    以下代码将图像(文件)从本地驱动器加载到 colab。

    from google.colab import files
    from io import BytesIO
    from PIL import Image
    
    uploaded = files.upload()
    im = Image.open(BytesIO(uploaded['Image_file_name.jpg']))
    

    使用以下命令在 google colab notebook 中查看图像:

    import matplotlib.pyplot as plt
    
    plt.imshow(im)
    plt.show()
    

    【讨论】:

      【解决方案4】:

      您可以使用命令直接从互联网上的 colab 上的图像

      !wget "copy paste the image address here"
      

      检查!ls

      使用以下代码显示图像:

      import cv2
      import numpy as np
      from matplotlib import pyplot as plt
      
      img = cv2.imread("Sample-image.jpg")
      img_cvt=cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
      plt.imshow(img_cvt)
      plt.show()
      

      【讨论】:

        【解决方案5】:

        您可以通过单击左侧的文件夹绘图按钮将文件手动上传到您的 google colab 工作目录。然后就可以像在您的计算机上一样访问它们。

        【讨论】:

        • 你有代码示例吗?我认为使用它会起作用,但它不起作用。 from PIL import Image as im im.open(dragon.png) im.show()
        • 以下内容为我工作from PIL import Image im = Image.open("dragon.png") im。 im.show() 在 google colab 上是错误的,只需使用“im”代替(参见stackoverflow.com/questions/60034512/…
        【解决方案6】:

        在 Google Colab 上上传、读取和查看图像文件的最简单方法。

        "---------上传图片到colab -code------------ ---------------”

        from google.colab import files
        uploaded = files.upload()
        for fn in uploaded.keys():
          print('User uploaded file "{name}" with length {length} bytes'.format(
              name=fn, length=len(uploaded[fn])))
        

        代码说明

        colab 中运行此代码后,将出现一个带有“选择文件”和“取消上传”两个按钮的小 gui,使用这些按钮您可以选择任何本地文件并上传。

        "---------检查图片是否上传------------- --------------"

        运行这个命令:

        import os
        !ls
        os.getcwd()
        

        !ls - 会给你上传的文件名

        os.getcwd() - 将为您提供上传文件的文件夹路径。

        "----------------从上传的文件中获取图片数据------ --------"

        运行代码:

        0 import cv2
        1 items = os.listdir('/content')
        2 print (items)
        3 for each_image in items:
        4  if each_image.endswith(".jpg"):
        5   print (each_image)
        6   full_path = "/content/" + each_image
        7   print (full_path)
        8   image = cv2.imread(full_path)
        9   print (image)
        

        代码说明

        第 1 行:

        items = os.listdir('/content')
        print(items)
        

        items 将有一个上传文件的所有文件名的列表。

        第 3 到 9 行:

        第 3 行中的for 循环可帮助您遍历已上传文件的列表。

        第 4 行,就我而言,我只想读取图像文件,所以我选择仅打开 那些以".jpg"结尾的文件

        第 5 行将帮助您查看图像文件名

        第 6 行将帮助您生成带有文件夹的图像数据的完整路径

        第 7 行可以打印完整路径

        第8行将帮助您读取彩色图像数据并将其存储在image变量中

        第9行可以打印图像数据

        "--------------查看图片---------- ---------------”

        import matplotlib.pyplot as plt
        import os
        import cv2
        items = os.listdir('/content')
        print (items)    
        
        for each_image in items:
          if each_image.endswith(".jpg"):
            print (each_image)
            full_path = "/content/" + each_image
            print (full_path)
            image = cv2.imread(full_path)
            image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
        plt.figure()
        plt.imshow(image)
        plt.colorbar()
        plt.grid(False)
        

        快乐的编码,就这么简单。

        【讨论】:

          【解决方案7】:

          您可以使用此功能绘制您的图像并给出路径。 使用函数可以很好地构建您的代码。

          from PIL import Image # Image manipulations
          import matplotlib.pyplot as plt
          %matplotlib inline
          
          # This function is used more for debugging and showing results later. It plots the image into the notebook
          def imshow(image_path):
            # Open the image to show it in the first column of the plot 
            image = Image.open(image_path)  
            # Create the figure 
            fig = plt.figure(figsize=(50,5))
            ax = fig.add_subplot(1, 1, 1) 
            # Plot the image in the first axe with it's category name
            ax.axis('off')
            ax.set_title(image_path)
            ax.imshow(image) 
          

          【讨论】:

            【解决方案8】:

            假设您可能没有从内存中写入文件?

            上传后试试下面的代码:

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

            将“wash care labels.xx”替换为您的文件名。这将从内存中写入文件。然后尝试调用该文件。

            希望这对你有用。

            【讨论】:

            • 引用文件名:uploaded[uploaded.keys()[0]] 不起作用,因为无法建立索引。字典需要转换为列表:list(uploaded.keys())[0]。代码仍然运行,但加载图像失败。
            【解决方案9】:

            更简单的方法:

            因为 colab 提供了挂载谷歌驱动器的选项

            1. 将图片上传到您的 Google 云端硬盘
            2. 点击装载驱动器(上传图标右侧)
            3. 查看'drive/My Drive/'下的文件

            检查文件的代码

            import glob
            glob.glob("drive/My Drive/your_dir/*.jpg")
            

            【讨论】:

              【解决方案10】:

              将其上传到笔记本后,执行此操作

              import cv2
              import numpy as np
              from google.colab.patches import cv2_imshow
              
              img = cv2.imread('./your image file.jpg')
              cv2_imshow(img)
              cv2.waitKey()
              

              【讨论】:

                【解决方案11】:
                from deepface import DeepFace
                import cv2
                import matplotlib.pyplot as plt
                
                from google.colab import files
                from io import BytesIO
                from PIL import Image
                
                uploaded = files.upload()
                
                
                next line
                
                # im = Image.open(BytesIO(uploaded['img.PNG']))
                img = cv2.imread("theCorona.PNG")
                plt.imshow(img[:,:, ::-1])
                plt.show()
                

                【讨论】:

                  猜你喜欢
                  • 2021-05-19
                  • 2020-09-06
                  • 2020-07-15
                  • 2023-04-01
                  • 2021-08-14
                  • 2022-11-07
                  • 2020-06-07
                  • 2020-03-06
                  • 2021-06-04
                  相关资源
                  最近更新 更多