如何将100个二进制图像保存到单个文件中?

时间:2016-08-01 17:45:37

标签: python image-processing binary save binary-data

因此,如果我有100个类型为.bmp的二进制图像,我想知道是否有一个库可以用来将它保存到一个文件中,然后读入该文件并迭代python中的每个图像。

如果没有库,我计划读取所有100个二进制图像,然后将它们保存到python中的数组中,然后将该数组保存到100_images.format这样的文件中。

我想知道以什么格式保存文件以使其尽可能小?由于图像都是二进制32 x 32像素,我怎么能有效地做到这一点?

我以为我可以将100张图像保存到这样的数组中:

array index
0             0 or 1 for if image 1 pixel at (0, 0) is white(0) or black(1)
1             0 or 1 for if image 1 pixel at (0, 1) is white(0) or black(1)
...
1023          0 or 1 for if image 1 pixel at (31, 31) is white(0) or black(1)
1024          0 or 1 for if image 2 pixel at (0, 0) is white(0) or black(1)
...

然后将其写入python中的文件。但我不知道我应该使用什么类型的文件 做了。然后在通过100个二进制图像读取的代码中,我希望它的工作方式如下:

binary_images_manager = new BinaryImagesManager('100_images.format')

for i in range(number_of_images_to_see):
    int[][] binary_image = binary_images_manager.readImage(i)

1 个答案:

答案 0 :(得分:0)

我会做长度编码: https://en.wikipedia.org/wiki/Run-length_encoding

您可以使用python的一个实现: https://www.rosettacode.org/wiki/Run-length_encoding#Python

编码:

  1. 对于每个图像矩阵,使用np.flatten
  2. 将其展平
  3. 运行长度编码图像
  4. 将代码添加到列表
  5. 对所有图像进行编码后,选择列表
  6. 解码:

    1. 取消列表
    2. 对于列表解码运行长度代码
    3. 中的每个项目
    4. 将得到的矢量重新塑造成所需的矩阵形状