【问题标题】:Replace certain pixels by integers in numpy array用numpy数组中的整数替换某些像素
【发布时间】:2020-05-22 15:03:27
【问题描述】:

我用一张图片为自己制作了一个 numpy 数组

from PIL import Image
import numpy as np

image = Image.open(file)
np.array(image)

它的形状是(6000, 6000, 4),在那个数组中我想用一个数字替换像素值可以说这个绿色像素[99,214,104,255] 将是1。 我只有 4 个这样的像素我想用一个数字替换,所有其他像素将是 0。是否有一种快速有效的方法可以做到这一点,以及最小化数据大小的最佳方法是什么。将其保存为dict() 是否更好,其中键将是x,y,值将是integers?还是将整个数组保存为它所具有的形状更好?我只需要颜色值,其余的对我来说并不重要。

我需要尽快处理这样一张图片,因为每 5 分钟就有一张图片,假设我想存储 1 年的数据。这就是为什么我想让它在时间和空间上尽可能高效。

【问题讨论】:

  • 到底是什么问题?

标签: python image numpy python-imaging-library numpy-ndarray


【解决方案1】:

如果我正确理解了这个问题,您可以使用 np.where:

>>> arr = np.array(image)
>>> COLOR = [99,214,104,255]
>>> np.where(np.all(arr == COLOR, axis=-1), 1, 0)

这将产生一个 6000*6000 的数组,如果像素是选定的颜色,则带有 1,否则将产生 0

【讨论】:

    【解决方案2】:

    只存储在database 中怎么样:要修改的像素的positionvalueimageshape,数组的dtype 和@987654327 @(jpg 等...)。您可以使用该信息从填充有0 的数组构建新图像。

    【讨论】:

      猜你喜欢
      • 2014-10-09
      • 2018-01-13
      • 1970-01-01
      • 2019-03-28
      • 2011-12-21
      • 2018-12-30
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多