python - 计算 numpy 数组(图像)特定部分的平均值

标签 python numpy opencv

我想计算图像某个部分(numpy 数组)的平均值。 该图像包含一只狗,我有一个蒙版,可以使用 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 只是为了找到这个平均值。 有没有更有效的方法来做到这一点?

最佳答案

您可以简单地使用dog_mask来索引图像并计算结果像素的平均值:

np.mean(dog_image[dog_mask > 0])

我特意将 dog_mask 设为 bool 类型,以确保我们能够使用 bool 掩码正确建立索引。我不会对您掩码的数据类型做出任何假设。

关于python - 计算 numpy 数组(图像)特定部分的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64917795/

相关文章:

python - 如何确保快速可靠的数据集迁移到固件后端?

python - python 可以 Mechanize 处理 HTTP 身份验证吗?

python - "[Errno 13] Permission denied"仅在 Ubuntu 服务器上尝试更新/更改文档时

python - 哪些语言具有与 Numpy 相似或等效的数组切片符号,为什么它不更常见?

python - Z 标签未显示在 3d matplotlib 散点图中

python - Numpy:在每行中的特定索引之后替换行的剩余列

用于列表的 python numpy.where 函数

c++ - 比较两个矩阵Opencv的面积

python - 统计视频中的人数

opencv - 瞳孔中心椭圆拟合