我想使用彩色模块在RGB和HSL之间进行转换。然而,彩色API是基于标量的。我想知道如何在不使用for-循环的情况下将其向量化,这样我就可以执行以下操作
hsl = np.vstack([np.ones((1, 256)), np.ones((1, 256,)), np.ones((1, 256,))]).transpose()
rgb = colorsys.hls_to_rgb(hsl[0, :], hsl[1, :], hsl[2, :])发布于 2015-03-07 17:00:03
您可以使用np.vectorize,但正如lolopop所指出的,这只会增加语法糖;它不会使隐式循环变得更快:
import colorsys
import numpy as np
rgb_to_hls = np.vectorize(colorsys.rgb_to_hls)
hls_to_rgb = np.vectorize(colorsys.hls_to_rgb)
arr = np.random.random((2, 2, 3)) * 255
r, g, b = arr[:, :, 0], arr[:, :, 1], arr[:, :, 2]
h, l, s = rgb_to_hls(r, g, b)
r2, g2, b2 = hls_to_rgb(h, l, s)
arr2 = np.dstack([r2, g2, b2])
assert np.allclose(arr, arr2)https://stackoverflow.com/questions/28917362
复制相似问题