【问题标题】:Viewing images from pickle file in python在python中查看pickle文件中的图像
【发布时间】:2020-10-09 03:20:28
【问题描述】:

我是机器学习的新手。我有一个 图像数据集,以 .p 格式(pickle) 呈现。

如何查看文件中的图像?我搜索了互联网,但我没有任何合适的答案。 请帮我解决这个问题。

我使用的代码:

import pandas as pd
import pickle
objects = []
with (open("full_CNN_train.p", "rb")) as openfile:
    while True:
        try:
            objects.append(pickle.load(openfile))
        except EOFError:
            break
        
print(objects)

我尝试 pickle.load() 时的输出

【问题讨论】:

  • 在文件上尝试pickle.load() 时得到了什么?
  • 您好,我已经添加了上面的输出屏幕截图。我得到了一些矩阵数组值

标签: python opencv machine-learning pickle


【解决方案1】:

它可能只是一个标准的图像矩阵,只需尝试使用 matplotlib.pyplot.imshow()

from matplotlib import pyplot as plt

img = ... # pickle load or whatever

plt.imshow(img)
plt.show()

【讨论】:

  • 您好,谢谢。你能在代码中展示如何做到这一点吗?我将添加上面使用的代码。对不起,谢谢!
  • 将其添加到答案中
【解决方案2】:

只需加载pickle文件,并使用“imshow”方法进行可视化。

import pickle
import matplotlib.pyplot as plt

pkl = open('pickled_image.pickle', 'rb')
im = pickle.load(pkl)

plt.imshow(im)

【讨论】:

  • 谢谢!我应用了它,我得到了 TypeError: Invalid shape (12764, 80, 160, 3) for image data。所以我添加了 plt.imshow(im[0]) 。现在它工作正常,但我只能查看 1 张图像,但其中有多个图像。有什么要补充的吗?
  • 好的,这意味着在您的图像文件中,您有 12764 张图像,80 像素 x 160 像素,3 个通道......您可以在 for 循环中执行 plt.imshow(im[i])您将 i 迭代到您的图像文件的长度......但这听起来不像您想要做的,因为它会显示您的所有图像。如果您只想看一些图像,您可以执行 plt.imshow(im[1])、plt.imshow(im[3]) 等,或者再次将 i 从 0 迭代到某个数字.. 但它一切都取决于你想看多少张图片!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 2021-08-15
  • 1970-01-01
相关资源
最近更新 更多