This script reads an image into a pixel array, processes the pixels with a
LUT and then writes the data back to disk. It handles the 10, 12 or 16 bit
integer data as well as half-float and float data. The half-float data read
was a little trickier than one would hope.
https://github.com/hpd/aces-dev/blob/master/python/aces/filterImageWithCLF.py

On write, it creates a separate image oiio.ImageOutput object, so maybe
that's not what you're looking for but figured this might help.

HP





On Fri, Jun 5, 2015 at 9:15 AM, Jonathan Gibbs <[email protected]> wrote:

> Awesome. I've tried other alternatives, but they all seem to be tripping
> in one way or another over 16-bit images.
> --jono
>
>
> On Fri, Jun 5, 2015 at 9:04 AM Larry Gritz <[email protected]> wrote:
>
>> OK, let me see what I can cook up for you.
>>
>>
>>
>> On June 5, 2015 8:50:43 AM PDT, Jonathan Gibbs <[email protected]>
>> wrote:
>>>
>>> I have some grayscale data in TIFF files, and need to do some custom
>>> image processing on it, as well as use routines from numpy/scipy which
>>> expects the input as bumpy.ndarrays.
>>>
>>> So, I was thinking along these lines:
>>>
>>> buf = oiio.ImageBuf(input)
>>> old_pixels = buf.get_pixels_as_ndarray(oiio.UINT16)
>>> new_pixels = process(old_pixels)
>>> buf.set_pixels_from_ndarray(new_pixels, oiio.UINT16)
>>> buf.write_image(output)
>>>
>>> I can always loop and call "set_pixel" - though I don't think setpixel
>>> allows me to hand it UINT16 values. It appears to always want floats.
>>>
>>> --jono
>>>
>>> On Thu, Jun 4, 2015 at 11:53 PM Larry Gritz <[email protected]> wrote:
>>>
>>>> Um, yeah, there's a simple way to pull pixels out, but not an easy way
>>>> to insert them (other than one at a time).
>>>>
>>>> I can probably add something for you easily (essentially, set_pixels).
>>>> But before I do, can you explain what you're trying to do overall, just in
>>>> case there's some better API strategy already in there?
>>>>
>>>>
>>>> On Jun 4, 2015, at 4:24 PM, Jonathan Gibbs <[email protected]> wrote:
>>>>
>>>> Does anyone have a good/simple example of working with OIIO in python.
>>>> I can get at the raw pixels nicely enough with ImageBuf.get_pixels(), but
>>>> it's not clear the best way to get those pixels back into an ImageBuf for
>>>> writing.  (There is no set_pixels.)
>>>>
>>>> As a side note, get_pixels returns a Python array, which I can convert
>>>> easily enough to a numpy.ndarray. Is there a better way to get from a
>>>> ImageBuf to a numpy.ndarray and back again in a reasonably efficient 
>>>> manner?
>>>>
>>>> --jono
>>>>
>>>> _______________________________________________
>>>> Oiio-dev mailing list
>>>> [email protected]
>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>>
>>>>
>>>> --
>>>> Larry Gritz
>>>> [email protected]
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Oiio-dev mailing list
>>>> [email protected]
>>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>>
>>> ------------------------------
>>>
>>> Oiio-dev mailing list
>>> [email protected]
>>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>>>
>>>
>> --
>> Larry Gritz
>> [email protected]
>>
>
> _______________________________________________
> Oiio-dev mailing list
> [email protected]
> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
>
>
_______________________________________________
Oiio-dev mailing list
[email protected]
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to