没有从 RGB 到 YUV 的转换

rom*_*asy 5 python rgb yuv python-imaging-library

我无法在任何 Python 库(最好是 PIL)中找到一个易于使用的函数来将 RGB 转换为 YUV。由于我必须转换很多图像,我不想自己实现它(没有 LUT 等会很昂贵)。

当我做直觉时:

from PIL import Image
img = Image.open('test.jpeg')
img_yuv = img.convert('YUV')
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

ValueError: conversion from RGB to YUV not supported
Run Code Online (Sandbox Code Playgroud)

你知道为什么会这样吗?在python甚至PIL中是否有任何有效的实现?

我不是计算机视觉专家,但我认为这个 ocnversion 在大多数库中都是标准的......

谢谢,

罗马

小智 7

你可以尝试'YCbCr'而不是'YUV',即

from PIL import Image
img = Image.open('test.jpeg')
img_yuv = img.convert('YCbCr')
Run Code Online (Sandbox Code Playgroud)

  • 我相信“YUV”实际上是一个来自古老模拟时代的术语,对于数字像素数据没有任何意义。人们在说“YUV”时通常实际上指的是“YCbCr”,因为该术语经常被误用。请参阅:http://wolfcrow.com/blog/whats-the-difference- Between-yuv-yiq-ypbpr-and-ycbcr/ (3认同)

小智 6

你可以试试这个:

import cv2
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
Run Code Online (Sandbox Code Playgroud)


小智 5

我知道可能会晚,但scikit-image有功能rgb2yuv

from PIL import Image
from skimage.color import rgb2yuv

img = Image.open('test.jpeg')
img_yuv = rgb2yuv(img)    
Run Code Online (Sandbox Code Playgroud)