Hi, I'm having a bit trouble with the Python bindings of Lcms. I just can't figure out what type of object to create to pass as an argument 2 to the cmsDoTransform(...) function. I want to use floatint point values (0.0 to 1.0) for RGB tuples rather than byte values (0 to 255) to convert from sRGB to Lab. Of course I could multiply the the floating point value by 255 and convert to an int, but that would introduce unnecessary rounding errors if performed often.
To highlight the problem I've added a little script. I'm passing in a numpy
float array for the RGB tuple, and I want to convert that one to Lab (as
float).
Any input on this? The Python examples in python/testbed were not enlightening
here, and I could only find compatible structures called COLORB and COLORW,
which seem to be byte and some sort of int respectively, but not float.
I've tried passing in a numpy array, the "data" member of the numpy array, a
Python list/tuple containing floats, but then all I'm getting is this:
TypeError: in method 'cmsDoTransform', argument 2 of type 'LPVOID'
It's probably simple, once you know, but for now I'm a bit lost ... :-/
Guy
import numpy
from lcms import lcms
XFORM_SRGB2LAB = lcms.cmsCreateTransform(H_SRGB, lcms.TYPE_RGB_DBL,
H_LAB, lcms.TYPE_Lab_DBL,
lcms.INTENT_PERCEPTUAL,
lcms.cmsFLAGS_NOTPRECALC)
def convert_sRGB2Lab(rgbColour):
"""
Converts sRGB to CIE L*a*b colour tuples. The sRGB colour tuple is tp be
given as floating point values (0.0 ... 1.0).
"""
# I'm missing some magic here. What structure "colour" do I create
# here, that I can feed into cmsDoTransform(...) below
colour = ...
lab = lcms.cmsCIELab()
lcms.cmsDoTransform(XFORM_SRGB2LAB, colour, lab, 1)
return numpy.array([lab.L, lab.a, lab.b])
if __name__ == '__main__':
# Patch A01 of che GretagMacbeth ColorChecker
anRgbColour = numpy.array([116.0 / 255,
81.0 / 255,
67.0 / 255])
lab = convert_sRGB2Lab(anRgbColour)
print lab
--
Guy K. Kloss
Institute of Information and Mathematical Sciences
Te Kura Putaiao o Mohiohio me Pangarau
Room 2.63, Quad Block A Building
Massey University, Auckland, Albany
Private Bag 102 904, North Shore Mail Centre
voice: +64 9 414-0800 ext. 9585 fax: +64 9 441-8181
eMail: [EMAIL PROTECTED] http://www.massey.ac.nz/~gkloss/
signature.asc
Description: This is a digitally signed message part.
------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________ Lcms-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/lcms-user
