У меня два 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
на что это можно бросить афайк?
Как предлагает @IwillnotexistIdonotexist, вы можете использовать Vec
класс и в соответствии norm()
:
cv::Vec4d d = a-b;
double distance = cv::norm(d);