用于改变多个numpy数组的函数的行为变化的平均值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于改变多个numpy数组的函数的行为变化的平均值相关的知识,希望对你有一定的参考价值。
我有三个BGR颜色值(存储到numpy数组中,并且我想计算它们的平均值(每个元素的平均值都是这样:[meanB,meanG,meanR])。]]
这是一个非常简单的任务,我发现这种方式可以做到这一点:
import numpy as np bgr1 = np.array([6, 149, 254]) bgr2 = np.array([5, 146, 251]) bgr3 = np.array([5, 149, 251]) bgr_mean = ((bgr1 + bgr2 + bgr3) / 3).astype(int) print(bgr_mean)
将输出按预期方式输出:
[5 148 252]
我的问题是,当我在代码中实现此功能时,尽管每个元素的值和类型都相同,但它根本不会给出相同的结果。此代码:
bgr1 = button_image[0][x] print("bgr1 = " + str(bgr1)) print(type(bgr1)) bgr2 = button_image[0][x-1] print("bgr2 = " + str(bgr2)) bgr3 = button_image[1][x+1] print("bgr3 = " + str(bgr3)) bgr_mean = ((bgr1 + bgr2 + bgr3) / 3).astype(int) print("bgr_mean = " + str(bgr_mean))
输出:
bgr1 = [6149254]
类'numpy.ndarray'
bgr2 = [5146251]
bgr3 = [5149251]
bgr_mean = [5 62 81]
Button_image是一个numpy数组BGR图像,而x(整数类型)是图像的中间(x轴,duh)。我的测试脚本与其他代码在同一项目中,使用的是Python 3.7.4和相同的numpy版本(1.16.3)
这是我的第一个问题,所以我希望我写的正确,如果您对导致此问题的原因有任何了解,请先谢谢。
我有三个BGR颜色值(存储到numpy数组中,并且我想计算它们的平均值(每个元素的平均值都是这样:[meanB,meanG,meanR])。这是一个漂亮的...
因此,正如第一条评论所述,数组的dtype就是问题。因为我正在从BGR图像数组中获取BGR值,所以它们继承了它的dtype(uint8)。解决的方法是简单地将每个bgr数组转换为np.int32 dtype,然后再计算它们的均值:
以上是关于用于改变多个numpy数组的函数的行为变化的平均值的主要内容,如果未能解决你的问题,请参考以下文章