首页 > 解决方案 > 蟒蛇 | Numpy 数组图像转换

问题描述

我有一个形状为(1000, 50, 100, 3)( class 'numpy.ndarray') 的 Numpy 图像数组,其中包含 1000 个图像 RGB(高度 = 50,宽度 = 100,通道 = 3)。我想首先将RGB值转换为YUV值并重新调整它们以获得yuv值。下面给出了逐像素转换器的原型实现。

我的问题:有没有一种简单的方法可以进行这种转换?

def yuv(_pixel):
    R, G, B = _pixel[0], _pixel[1], _pixel[2]
    Y = 0.299 *  R + 0.587 * G + 0.114 * B
    y = Y / 127.5 - 1
    u = (0.493 * (B - Y)) / 127.5 - 1
    v = (0.887 * (R - Y)) / 127.5 - 1
    return np.array([y, u, v])

标签: pythonnumpyrgbyuv

解决方案


你调查过numpy.apply_along_axis吗?

你可以这样做:

images_yuv = np.apply_along_axis( yuv, -1, images_rgb)

编辑:混淆了参数的顺序


推荐阅读