图片对象的序列化?
我对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()