Учитывая массив NumPy формы (8, 24, 3)
, соответствующий HSV-изображению с высотой 8
и шириной 24
, я хотел бы подсчитать количество пикселей, удовлетворяющих некоторому предикату, определенному функцией.
Обычно с массивами NumPy мы можем сделать что-то вроде этого:
def isSmall(x):
return x < 3
a = np.array([1,2,3,4,5])
isSmall(a)
output: array([ True, True, False, False, False])
В какой момент мы можем посчитать количество True
значений в выходных данных? Могу ли я сделать что-то подобное с предикатом, который ожидает три значения, соответствующие значениям HSV в массиве формы (8, 24, 3)
?
Примерно так:
def isRed(x):
h, s, v = (x[0], x[1], x[2])
return ((170 <= h <= 180 or 0 <= h <= 10) and 100 <= s <= 255)
a = image of shape (8,24,3)
isRed(a)
Desired output: array([[ True, True, ..., False, False],
... , ...
[False, True, ..., False, False]])
Это создает форму ошибка, однако, поскольку, по-видимому, весь массив передается в функцию, а не NumPy, выполняющий свои фильтрующие маги c.