【发布时间】:2014-09-15 18:41:59
【问题描述】:
我创建了一个脚本,可以将图像的色调围绕色轮移动任意数量的步骤。
正如你想象的那样,当我导入图像(使用 PIL)并将其转换为 Numpy 数组时,它是这个形状:(x, y, (r,g,b))。
我使用 Skimage 颜色模块将此数组从 RGB 转换为 HSV 颜色空间(在将 RGB 值缩放到 [0,1.0] 范围之后)。
我遇到的问题是仅对所有像素的 HSV 值(H、S 或 V)之一进行操作。我想为数组中的每个“像素”有效地添加、乘以或减去这三个维度中的任何一个。
我通过将 HSV 值拆分为三个单独的数组来使其工作:
h,s,v = np.dsplit(hsv,3)
以我想要的方式操作数组:
h_new = np.multiply(h,.33)
然后重新组装数组:
hsv_new = np.stack((h_new,s,v))
这似乎不是最有效的方法,所以我的问题是: 如何在不必将数组拆分为块的情况下操作这些维度中的每一个?
【问题讨论】:
标签: python arrays image-processing numpy