#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, чтобы убедиться, что мы правильно индексируем с помощью логической маски. Я не делаю никаких предположений относительно типа данных вашей маски.