преобразование RGB в CMYK - PullRequest
0 голосов
/ 14 июля 2020

У меня есть вопрос по преобразованию цвета RGB в цвет CMYK. Когда я выполняю код, я получаю следующий результат:

 ans =
     'RGB'

Это означает, что преобразование не происходило и изображение не отображалось мне, что я могу сделать?

     folder = iccroot;
     disp(folder)
     profiles = iccfind(folder)
     size(profiles)
     currentProfile = profiles{1}
     currentProfile.Description
     ProfileName = currentProfile.Description.String
     [~,descriptions] = iccfind(folder)
     descriptions
     [profiles,descriptions] = iccfind(folder,'rgb')
     descriptions
     currentProfile.Description
     P = iccread('sRGB.icm');
     P_new = iccwrite(P,'my_profile.icm');
     I_rgb = imread('Pepper.png');
     inprof = iccread('sRGB.icm');
     outprof = iccread('EV2456 User 5000K G2.2.icc');
     C = makecform('icc',inprof,outprof)
     I_cmyk = applycform(I_rgb,C);
     imwrite(I_cmyk,'pep_cmyk.tif','tif')
     info = imfinfo('pep_cmyk.tif');
     info.PhotometricInterpretation

1 Ответ

2 голосов
/ 14 июля 2020

Я попробовал ваш код и обнаружил, что в вашей системе должен быть файл «EV2456 User 5000K G2.2.i cc». В моем он отсутствует, так как у меня нет такого монитора, как у вас. Проверьте по пути

"C: \ Windows \ System32 \ spool \ drivers \ color"

и если у вас нет файла i cc в базе данных I CC

https://www.tftcentral.co.uk/articles/icc_profiles.htm

Кажется, у них есть два файла, связанных с вашим монитором, попробуйте

outprof = iccread('eizo_ev2455.icc');
outprof = iccread('eizo_ev2450.icc');

, и он должен работать. Работает в моей системе ... Просмотрите все характеристики, используя

info = imfinfo('pep_cmyk.tif')
...