Теперь видна разница, и можно определить цвет точнее
Сравнение среднего цвета с эталонным
Для проверки, совпадает ли средний цвет части изображения с заданным эталонным цветом в пределах допустимой погрешности, используется следующая строка кода:
np.all(np.abs(avg_color - color) < tolerance)
Разберем ее по частям.
avg_color - color
Здесь происходит вычитание эталонного цвета color
из среднего цвета avg_color
. Поскольку и avg_color
, и color
являются массивами, содержащими значения для каждого из цветовых каналов (B, G, R), результатом будет массив разностей для каждого канала:
np.abs(avg_color - color)
Функция np.abs()
вычисляет абсолютное значение элементов массива (значение "по модулю").
После применения функции np.abs()
, массив разностей для каждого канала превращается в массив абсолютных значений этих разностей. Это необходимо, чтобы учитывать любые отклонения без учета их знака (положительные или отрицательные):
abs_diff < tolerance
Это условие сравнивает каждое значение в массиве абсолютных разностей с заданной погрешностью tolerance
. В результате получается массив булевых значений, где каждое значение указывает, удовлетворяет ли соответствующий канал условию:
np.all()
Функция np.all()
проверяет, являются ли все значения в булевом массиве True
. Если хотя бы одно значение False
, np.all()
вернет False
.
Если все абсолютные разности меньше заданной погрешности, функция вернет True
, указывая, что средний цвет части изображения совпадает с эталонным в пределах допустимой погрешности. В противном случае функция вернет False
.
Пример