python - 在字典中存储jpg数据?

标签 python image data-structures

我有一台相机,每分钟拍摄两张图像,每天生成 2880 张图像,每张图像约 180kb。在几个月的时间里,这会增加许多图像,这使得数据传输变得很麻烦。为了解决这个问题,我将图像打包成每月的 tar 文件(例如 201301.tar、201302.tar)。我在分析工作中使用图像,因此我确实需要访问数据,但我遇到了两个问题:

  1. 要加载单个 jpg,我需要解压缩该月的图像(我想避免解压缩所需的时间)
  2. 当我必须读取几天的数据时,读取单个 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/

相关文章:

python - 如何将 pandas DataFrame 转换为省略 NaN 值的字典列表?

python - Django View 不返回 httpresponse

html - 将图像放置在其容器之外

javascript - 使用 Canvas 下载图像会增加文件的大小

java - 有没有支持快速插入和中值计算的数据结构?

python - 在 Python 中修改文本

python - Try block 捕获错误的异常

html - 下载网页和依赖项,包括 css 图像

algorithm - BigOh 符号 O(log n) 何时出现?

algorithm - 应用对数在树中导航