Re: PIL Image array interface has the wrong size for YCbCr

Fredrik Lundh <[email protected]>
Newsgroups gmane.comp.python.image
Message-ID <[email protected]>
Just committed a fix to trunk (including some simple tests for this
operation & mode...).

Thanks! /F

On Fri, Oct 8, 2010 at 6:51 AM, David Coles <[email protected]> wrote:
> PIL's Image class has incorrect dimension specified for YCbCr images.
> This causes issues when converting to or from NumPy arrays.
>
> According to http://www.pythonware.com/library/pil/handbook/concepts.htm
> YCbCr should be "3x8-bit pixels, colour video format". Instead it
> appears to be converted to a 4x8-bit format.
>
> The incorrect definition is at line 206 of
> http://svn.effbot.python-hosting.com/pil/PIL/Image.py.
>
> Example: Load up any image and convert to YCbCr.
>
>>>> import numpy
>>>> import Image as im
>>>> image = im.open('bush640x360.png')
>>>> ycbcr = image.convert('YCbCr')
>
> Using the Array interface produces a HxWx4 array, which is the wrong
> dimensions for YCbCr. Thus when selecting a single channel it displays
> incorrectly:
>
>>>> A = numpy.asarray(ycbcr)
>>>> print A.shape
> (360, 640, 4)
>>>> im.fromarray(A[:,:,0], "L").show()
>
> Here's an example decoding the image byte string ourselves gives the
> correct result:
>
>>>> B = numpy.ndarray((image.size[1], image.size[0], 3), 'u1',
> ycbcr.tostring())
>>>> print B.shape
> (360, 640, 3)
>>>> im.fromarray(B[:,:,0], "L").show()
>
> Attached is a patch against the 1.1.7-2 (python-imaging) package in
> Ubuntu as I can't find the development repository for 1.1.7. See
> https://bugs.edge.launchpad.net/ubuntu/+source/python-imaging/+bug/656666 for details.
>
> Cheers,
> David
>
> _______________________________________________
> Image-SIG maillist  -  [email protected]
> http://mail.python.org/mailman/listinfo/image-sig
>
>
_______________________________________________
Image-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/image-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.