图片对象的序列化?

5 投票
2 回答
34015 浏览
提问于 2025-04-18 15:49

我对pickle这个东西完全是个新手,现在有大约10万个图片需要进行处理。

这些图片首先被加载成图像对象,然后转换成数据,具体的做法如下:

image = {
    'pixels': im.tostring(),
    'size': im.size,
    'mode': im.mode,
}

那么,我该怎么把这些数据放进一个pkl文件里呢?

2 个回答

2

只需要像处理其他任何东西一样,调用 pickle.dump 就可以了。你有一个字典,它的值都是一些简单的类型(比如字符串、几个数字组成的元组等等)。这个字典是从图片来的,这个事实并不重要。

如果你有很多这样的字典,可能它们被存储在一个列表或其他结构中,你可以把这些可以被“腌制”的对象放在一个列表里进行处理。

所以:

with open('data.pkl', 'wb') as f:
    pickle.dump(images, f)
5

你可以这样做:

file = open('data.pkl', 'wb')

# Pickle dictionary using protocol 0.
pickle.dump(image, file)
file.close()

要读取字典里的内容,你可以这样做:

file = open('data.pkl', 'rb')

image = pickle.load(pkl_file)
print image
file.close()

也可以把数据导出两次:

import pickle

# Write to file.
file = open("data.pkl", "wb")
pickle.dump(image1, file)
pickle.dump(image2, file)
file.close()

# Read from file.
file = open("data.pkl", "rb")
image1 = pickle.load(file)
image2 = pickle.load(file)
file.close()

撰写回答