2016-06-02 436 views
3

RGBからYUVへの変換のためのPythonライブラリ(PRIが好ましい)で使いやすい関数を見つけることができません。 多くの画像を変換する必要があるので、私はそれを自分で実装したくありません(LUTなどがなければ高価になるでしょう)。RGBからYUVへの変換がありません

私は直感的な操作を行います。

from PIL import Image 
img = Image.open('test.jpeg') 
img_yuv = img.convert('YUV') 

私はエラーが表示されます。このような場合は、なぜ

ValueError: conversion from RGB to YUV not supported 

あなたは知っていますか? これはPythonやPILのような効率的な実装ですか?

...

ローマ

おかげで、私はコンピュータビジョンの専門家でありませんが、私はこのocnversionは、ライブラリのほとんどでは標準的なものであると思っ

答えて

2

「YUV」ではなく「YCbCr」を試すことができます。つまり、

from PIL import Image 
img = Image.open('test.jpeg') 
img_yuv = img.convert('YCbCr') 
+0

これは私が最後にしたものです。これまでのところ、実際の解決策はないようです。ありがとうございました – romeasy

+0

私は 'YUV'は実際には良い古いアナログ時代からの用語であり、デジタルピクセルデータには意味がないと信じています。人々は通常、用語が誤用されることが多いので、「YUV」と言うときには通常、「YCbCr」を意味します。参照:http://wolfcrow.com/blog/whats-the-difference-between-yuv-yiq-ypbpr-and-ycbcr/ – jlh

+0

コメントのための@jihありがとうございました。これは私が試して以来、私が見つけたものです。私のCSコースでは、人々はYUVを持っていましたが、YCbCrと同じ理由がわかりました。 ありがとうございます。 – romeasy

4

あなたはこれを試すことができます。

import cv2 
img_yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV) 
+0

しかし、それは私がちょうど変換のためにインストールしたくない全く新しいパッケージ(OpenCVの)が必要です。 しかし、プロジェクトは既に終了しています。 – romeasy

+0

YUV変換にアクセスするためだけにOpenCVをインストールするには時間がかかりすぎます。 – rayryeng

1

私はそれが遅れる場合があります知っているが、機能rgb2yuv

from PIL import Image 
from skimage.color import rgb2yuv 

img = Image.open('test.jpeg') 
img_yuv = rgb2yuv(img)  
1

scikit-imageていますが、追加パッケージをインストールしたくない場合は、あなただけ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()) 
関連する問題