Простая метрика для различия цвета в OpenCV?

У меня два cv::Scalar объекты, и я хочу рассчитать разницу в цвете.

Я придумал этот код:

cv::Scalar a(255, 128, 255); // color 1
cv::Scalar b(100, 100, 100); // color 2

cv::Scalar d = b - a;
double distance = sqrtl(d[0]*d[0] + d[1]*d[1] + d[2]*d[2]);

Это выглядит довольно неуклюже. Есть ли более простой способ выразить ту или иную метрику, например, способ выразить скалярное произведение d*dили способ сказать прямо расстояние двух cv::Scalar, или же cv::Vec4iна что это можно бросить афайк?

5

Решение

Как предлагает @IwillnotexistIdonotexist, вы можете использовать Vec класс и в соответствии norm():

cv::Vec4d d = a-b;
double distance = cv::norm(d);
8

Другие решения


По вопросам рекламы [email protected]