如何解决使用 colormath 将 RGB 转换为 xyY
使用 colormath,我将 RGB 值转换为 xyY 值。它适用于 1 个 RGB 值,但我找不到正确的代码来对从 Excel 导入的多个 RGB 值进行转换。我习惯使用以下代码:
from colormath.color_objects import sRGBColor,xyYColor
from colormath.color_conversions import convert_color
import pandas as pd
data = pd.read_excel(r'C:/Users/User/Desktop/Color/Fontane/RGB/FontaneHuco.xlsx')
df = pd.DataFrame(data,columns=['R','G','B'])
#print(df)
rgb = sRGBColor(df['R'],df['G'],df['B'],is_upscaled=True)
xyz = convert_color(rgb,xyYColor)
print(xyz)
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\pythonProject4\Overige\Chroma.py",line 9,in <module>
lab = sRGBColor(df['R'],df['B'])
File "C:\Users\User\AppData\Local\Programs\Python\python39\lib\site-packages\colormath\color_objects.py",line 524,in __init__
self.rgb_r = float(rgb_r)
File "C:\Users\User\AppData\Local\Programs\Python\python39\lib\site-packages\pandas\core\series.py",line 141,in wrapper
raise TypeError(f"cannot convert the series to {converter}")
TypeError: cannot convert the series to <class 'float'>
有人知道如何解决这个问题吗?
解决方法
convert_color
期待浮点数,而您却给它数据框列。您需要一次应用转换一行,具体操作如下:
xyz = df.apply(
lambda row: convert_color(
sRGBColor(row.R,row.G,row.B,is_upscaled=True),xyYColor
),axis=1,)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。