首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取所有帧之间像素的平均值。

获取所有帧之间像素的平均值。
EN

Stack Overflow用户
提问于 2021-02-03 18:37:44
回答 3查看 129关注 0票数 0

我有14400个值保存在一个列表中,它代表了4个像素,垂直于6个像素,水平和600个帧。

这是,如果有人感兴趣的话

代码语言:javascript
复制
# len of blurry values 14400
data = np.array(blurry_values)

#shape of data (4, 6, 600)
shape = ( 4,6,600 )
data= data.reshape(shape)

#print(np.round(np.mean(data, axis=2),2))

[[0.89 0.37 0.45 0.44 0.51 0.52]
 [0.5  0.47 0.53 0.48 0.48 0.53]
 [0.49 0.5  0.5  0.53 0.48 0.54]
 [0.48 0.51 0.45 0.55 0.5  0.49]]

但是,当我通过执行以下操作来确认第一个平均值是否正常时

代码语言:javascript
复制
list1 = blurry_values[::23]
np.round(np.mean(list1),2)

我得到了0.51而不是0.89

我试图获得所有帧像素的平均值。为什么这些价值观是不同的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-03 21:18:26

由于我还没有看到生成blurry_values的代码,所以我不能百分之百肯定,但我猜您正在错误地重新塑造

在大多数编程场景中,我预计像素高度和像素宽度将由最后两个轴表示,而帧将由这两个轴之前的轴表示。

所以,我猜你的形状应该是shape = (600, 4, 6)而不是shape = (4, 6, 600)

在这种情况下,您应该执行np.round(np.mean(data, axis=0),2)而不是np.round(np.mean(data, axis=2),2)。顺便说一句,这也会产生(4, 6)的形状。

然后,为了让您的检查,您应该这样做:

代码语言:javascript
复制
list1 = blurry_values[::24] # Note that it's 24, not 23
np.round(np.mean(list1),2)

您应该检查np.round(np.mean(data, axis=0),2)的第一个值和np.round(np.mean(list1),2)的第一个值。(不过,我还没有亲自测试过)。

票数 1
EN

Stack Overflow用户

发布于 2021-02-03 19:15:54

我不知道为什么,但是:

代码语言:javascript
复制
list1 = blurry_values[:600]

给出0.89

代码语言:javascript
复制
list1 = blurry_values[600:1200]

给出0.37

Python首先填充最后一个维度,我相信.

票数 2
EN

Stack Overflow用户

发布于 2021-02-03 19:31:38

让我们用一个更小的数组来处理这个问题:

代码语言:javascript
复制
import numpy as np
np.random.seed(42)

values = np.random.randint(low=0, high=100, size=48)
shape = (2,4,6)
data = values.reshape(shape)  # 2 frames of 4 pixels by 6 pixels each

print(data, '\n')

print(np.round(np.mean(data, axis=0),2), '\n')  # average values across frames

list1 = values[::24]
print(np.round(np.mean(list1),2))  # average of first pixel across frames

输出:

代码语言:javascript
复制
[[[51 92 14 71 60 20]
  [82 86 74 74 87 99]
  [23  2 21 52  1 87]
  [29 37  1 63 59 20]]

 [[32 75 57 21 88 48]
  [90 58 41 91 59 79]
  [14 61 61 46 61 50]
  [54 63  2 50  6 20]]] 

[[41.5 83.5 35.5 46.  74.  34. ]
 [86.  72.  57.5 82.5 73.  89. ]
 [18.5 31.5 41.  49.  31.  68.5]
 [41.5 50.   1.5 56.5 32.5 20. ]] 

41.5
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66033694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档