我有一台相机,每分钟拍摄两张图像,每天生成 2880 张图像,每张图像约 180kb。在几个月的时间里,这会增加许多图像,这使得数据传输变得很麻烦。为了解决这个问题,我将图像打包成每月的 tar 文件(例如 201301.tar、201302.tar)。我在分析工作中使用图像,因此我确实需要访问数据,但我遇到了两个问题:
- 要加载单个 jpg,我需要解压缩该月的图像(我想避免解压缩所需的时间)
- 当我必须读取几天的数据时,读取单个 jpg 的速度会很慢。
是否有一种实用的方法可以将图像数据存储在单个文件中(我更有可能再次按月存储数据)?我认为存储为字典(键=日期时间值,值=数组(大小=480 x 660 x 3))是有意义的,但我在重新加载数据时遇到问题。
# Example
import datetime as dt
from scipy.misc import imread as ir
dts = dt.datetime.strptime
image = ir('skycam-current.jpg',flatten=False)
data = {}
data[dt.datetime(2013,01,01)] = image
np.savez('test.dic.npz',data)
# Then, to re-load the data
data = np.load('test.dic.npz')
当我重新加载数据时,我得到一本字典,有点:
>>> type(data)
>>> numpy.lib.npyio.NpzFile
>>> data.keys()
>>> ['arr_0']
如果我尝试恢复字典,我会得到一个 0 维数组
>>> a = data['arr_0']
>>> a.shape
>>> ()
任何人都可以推荐一种更好的方法来存储字典或存储图像数据吗?我一直在使用 pandas 进行分析/存储,但它似乎不是为存储数组而构建的。
最佳答案
如果它已经是 jpeg 压缩的,那么进一步压缩它并不会真正获得太多的空间优势。您将这些放入 tar 存档中是为了节省空间,还是因为该目录需要人类可读?如果目录不需要人类可读,那么与仅将每个月存储在单独的文件夹中并使用 sqlite 数据库或仅在文件/文件夹名称中保留一些逻辑相比,归档并没有太大的优势他们的踪迹。
关于python - 在字典中存储jpg数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20404956/