C / C ++ библиотека для вычисления разности цветов (дельта E) и преобразования цветового пространства - PullRequest
0 голосов
/ 17 ноября 2011

Я гуглил, но ничего не нашел.Я использую библиотеку colormath для python, но она довольно медленная.

Ответы [ 4 ]

2 голосов
/ 17 ноября 2011

Я написал код для этого в Javascript.Это очень легко перевести на C!

См. deltaE2000(), который принимает цвета в LCHab, и, возможно, функции для преобразования RGB -> Линейный RGB -> XYZ-> Lab -> LCHab. Код и UI demo .

1 голос
/ 17 ноября 2011

OpenCV , вероятно, подойдет.

0 голосов
/ 10 апреля 2018

Я написал эту библиотеку для личного использования:

https://github.com/ThunderStruct/Color-Utilities

Размер файлов заголовка и cpp меньше 5 КБ, поэтому это может быть полезно, если вы не хотитезасорять ваш проект большой библиотекой

Вот пример:

// Colors' construction
ColorUtils::rgbColor c1(1.0, 1.0, 1.0), c2(0.5, 0.5, 0.5);

// Calculate Delta-E using CIE76
std::cout << ColorUtils::getColorDeltaE(c1, c2) << '\n';

Это выводит 46.8072 (вы можете проверить результаты, используя этот конвертер)

0 голосов
/ 01 марта 2018

Попробуйте http://github.com/dmilos/color

Пример кода:

typedef ::color::rgb<double> color_t; // or lab or hsv or any other available model

color_t a = ::color::constant::orange_t{};      
color_t b = ::color::constant::chocolate_t{};

std::cout << ::color::operation::distance< ::color::constant::distance::CIE94_textile_entity >( a, b ) << std::endl;
std::cout << ::color::operation::distance< ::color::constant::distance::CIEDE2000_entity >( a, b ) << std::endl;

Другие примеры с другими алгоритмами:

https://github.com/dmilos/color/tree/master/example/less-than-1k/operation/distance

Цветовая модель не имеет значения. Он будет автоматически преобразован внутри.

Все формулы документированы по адресу: http://en.wikipedia.org/wiki/Color_difference

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...