我无法在任何Python库(最好是PIL)中找到一个易于使用的函数,用于从RGB转换为YUV。 由于我必须转换许多图像,我不想自己实现它(没有LUT就会很昂贵等等)。
当我做直观的时候:
from PIL import Image
img = Image.open('test.jpeg')
img_yuv = img.convert('YUV')
我收到错误:
ValueError: conversion from RGB to YUV not supported
你知道为什么会这样吗? 在python甚至PIL中是否有任何有效的实现?
我不是计算机视觉专家,但我认为这种情况在大多数图书馆都是标准的......
谢谢,
罗马
答案 0 :(得分:4)
你可以试试这个:
import cv2
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
答案 1 :(得分:2)
您可以尝试'YCbCr'而不是'YUV',即
from PIL import Image
img = Image.open('test.jpeg')
img_yuv = img.convert('YCbCr')
答案 2 :(得分:2)
如果您不想安装任何其他软件包,可以查看skimage source code。以下代码片段取自该github页面,并进行了一些小的更改:
# Conversion matrix from rgb to yuv, transpose matrix is used to convert from yuv to rgb
yuv_from_rgb = np.array([[ 0.299 , 0.587 , 0.114 ],
[-0.14714119, -0.28886916, 0.43601035 ],
[ 0.61497538, -0.51496512, -0.10001026 ]])
# Optional. The next two line can be ignored if the image is already in normalized numpy array.
# convert image array to numpy array and normalize it from 0-255 to 0-1 range
new_img = np.asanyarray(your_img)
new_img = dtype.img_as_float(new_img)
# do conversion
yuv_img = new_img.dot(yuv_from_rgb.T.copy())
答案 3 :(得分:1)
我知道可能会迟到,但scikit-image
的功能为rgb2yuv
from PIL import Image
from skimage.color import rgb2yuv
img = Image.open('test.jpeg')
img_yuv = rgb2yuv(img)