先把当时的情况摆出来。印刷稿是 CMYK 的 tif,转成 jpg 直接送模型问主色调,模型答深蓝,实际是墨绿,取色值发现文件里还是 0,80,100,40 的 CMYK 通道。
排查方向其实有限,先把可能性排一排。CMYK 没有转成 sRGB 就送去识别。还有一种是ICC 配置在导出时被丢弃。
另外,模型只接受 8 位 RGB,通道被当灰度。少数情况下是透明通道被当成黑色叠加。
第一件事是确认色彩空间和位深
magick identify -verbose art.tif | grep -E 'Colorspace|Depth|Profile'
带 ICC 转成 sRGB 再导出
magick art.tif -profile sRGB.icc -depth 8 -quality 92 art_srgb.jpg
取几个点核对转换后的色值
magick art_srgb.jpg -format '%[pixel:p{100,200}]' info:
等前面都确认过,再重新提问并记录模型判断
python vision.py --image art_srgb.jpg --prompt "主色调是什么,给出近似色值"
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
别只看报错消失,验证要多做一步。转换后的图色彩空间是 sRGB,取色值与设计稿一致,模型给出的主色调和色值都能对上。
这里还有个坑。色彩空间不对时模型看到的是通道错位后的假颜色,问题不在识别能力,转换时把 ICC 一起带上。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
