【问题标题】:How to read images into a script without using using imageio or scikit image?如何在不使用 imageio 或 scikit 图像的情况下将图像读入脚本?
【发布时间】:2018-07-21 15:29:34
【问题描述】:

我正在尝试在 python 中读取png 图像。 scipy 中的 imread 函数是 deprecated,他们建议使用 imageio 库。

但是,我宁愿将外部库的使用限制为 scipynumpymatplotlib 库。因此,使用imageioscikit image 对我来说不是一个好的选择。

python 或scipynumpymatplotlib 中是否有任何方法可以读取图像,这些方法不会被弃用?

【问题讨论】:

    标签: python image scipy


    【解决方案1】:

    为了获得更好的答案,您可以使用这些代码行。 这是一个例子可能对你有帮助:

    import cv2
    
    image = cv2.imread('/home/pictures/1.jpg')
    plt.imshow(image)
    plt.show()
    

    imread() 中你可以传递目录。所以你也可以使用str()+来组合动态目录和固定目录,如下所示:

    path = '/home/pictures/'
    for i in range(2) :
        image = cv2.imread(str(path)+'1.jpg')
        plt.imshow(image)
        plt.show()
    

    两者都是一样的。

    【讨论】:

    • 如果我想创建一个 for 循环,以 1×1 的方式打开文件夹中的所有图像,我将如何使用上述方法?谢谢
    • @OscarDolloway 希望this link 对您有所帮助。
    • 上面写着NameError: name 'cv2' is not defined。这个答案是否缺少import
    • @john-henckel 是的。当然。您需要先使用以下命令安装OpenCV-Pythonpip3 install opencv-python,然后再安装import cv2。确切答案cv2opencv的接口,所以你需要先安装它。要阅读更多信息,link 很好。
    【解决方案2】:

    简单的方法

    从 IPython.display 导入图像

    图像(文件名 =“Covid.jpg” 大小)

    【讨论】:

      【解决方案3】:

      我阅读了所有答案,但我认为最好的方法之一是使用 openCV 库。

      import cv2
      
      img = cv2.imread('your_image.png',0)
      

      要显示图像,请使用以下代码:

      from matplotlib import pyplot as plt
      plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
      plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
      plt.show()
      

      【讨论】:

        【解决方案4】:

        你可以尝试像这样使用cv2

        import cv2
        
        image= cv2.imread('image page')
        
        cv2.imshow('image', image)
        
        cv2.waitKey(0)
        
        cv2.destroyAllWindows()
        

        【讨论】:

          【解决方案5】:

          来自documentation

          Matplotlib 只能原生读取 PNG。通过对 Pillow 的可选依赖项支持更多图像格式。

          所以对于PNG,我们可以使用plt.imread()。在其他情况下,最好直接使用Pillow

          【讨论】:

            【解决方案6】:
            import matplotlib.pyplot as plt
            image = plt.imread('images/my_image4.jpg')
            plt.imshow(image)
            

            jupyter 中的警告消息建议使用“matplotlib.pyplot.imread”。

            【讨论】:

            【解决方案7】:

            你也可以像这样使用Pillow

            from PIL import Image
            image = Image.open("image_path.jpg")
            image.show()
            

            【讨论】:

              【解决方案8】:

              有了matplotlib就可以使用(如matplotlibdocumentation所示)

              import matplotlib.pyplot as plt
              import matplotlib.image as mpimg
              
              img=mpimg.imread('image_name.png')
              

              如果需要,还可以绘制图像

              imgplot = plt.imshow(img)
              

              【讨论】:

              • 请注意,这不再由 matplotlib 在内部完成,而是在内部委托给枕头(see the docs),因此您无法避免额外的依赖。 ImageIO 在内部做同样的事情(除非明确告知要使用不同的后端),所以 - 在 2022 年 - 这个答案、下面建议枕头的答案和使用问题中建议的 ImageIO 之间几乎没有区别。就我个人而言,我更喜欢 ImageIO,因为它比其他选项更灵活(但我维护了库,所以要加点盐)。
              【解决方案9】:

              如果您只想在 Python 中读取图像,使用指定的 仅限图书馆,我会选择matplotlib

              在 matplotlib 中:

              import matplotlib.image
              read_img = matplotlib.image.imread('your_image.png')
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-02-10
                • 2010-12-06
                • 1970-01-01
                • 1970-01-01
                • 2012-04-06
                • 1970-01-01
                相关资源
                最近更新 更多