Вычислить среднее значение определенной части массива numpy (изображение)

#python #numpy #opencv

#python #numpy #opencv

Вопрос:

Я хочу вычислить среднее значение определенной части изображения (массива numpy). Изображение содержит dog, и у меня есть маска, которая может затемнять все пиксели, кроме dog, используя bitwise_and . Затем я могу вычислить среднюю интенсивность собаки без окружения как

 masked_dog_image = cv2.bitwise_and(dog_image,dog_mask)
dog_image_no_zeros = masked_dog_image[masked_dog_image > 0].
np.mean(dog_images_no_zeros)
 

ОДНАКО, думаю, нет необходимости создавать masked_dog_image, а затем dog_image_no_zeros только для того, чтобы найти это среднее значение.
Есть ли более эффективный способ сделать это?

Комментарии:

1. Вы имеете в виду np.mean(masked_dog_image[masked_dog_image > 0]) ? У меня такое чувство, что я пропустил деталь. Если это так, пожалуйста, обновите вопрос, чтобы уточнить требования.

2. Спасибо за ответ. Теперь я исправил вопрос.

Ответ №1:

Вы можете просто использовать dog_mask для индексации изображения и вычисления среднего значения результирующих пикселей:

 np.mean(dog_image[dog_mask > 0])
 

Я специально создал dog_mask тип bool of, чтобы убедиться, что мы правильно индексируем с помощью логической маски. Я не делаю никаких предположений относительно типа данных вашей маски.