OpenCV中颜色差异的简单度量

Simple metric for difference of color in OpenCV?

本文关键字:简单 度量 颜色 OpenCV      更新时间:2023-10-16

我有两个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::Scalarcv::Vec4i的距离的方法,它可以被投射到afaik?

根据@IwillnotexistIdonotexist的建议,您可以使用Vec类并根据norm():

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