我有一些代码,在每个循环之后,分析一个图像,然后将图像的平均像素强度值附加到一个一维数组(result_array
)。所以这个一维数组每循环增长一个值。用时间表示的数组显示一个频率,我想启动一个计数器来计算每个“峰值”之间的帧,这样我就可以用这个值来计算每分钟的频率。你知道吗
例如:当我打印(result_array
)时,我在28次循环后得到:
[255. 3. 1. 0. 16. 26. 3. 0. 0. 0. 0. 0. 0. 0.
2. 11. 1. 0. 0. 0. 0. 0. 0. 0. 4. 12. 1. 0.]
用肉眼观察,峰值是255、26、11和12,中间的每一个数字都是一帧,我想把它计算出来,变成一个频率方程的值。然后在每个峰值后刷新和重复。如何检测此位置,然后开始计数?我的编程知识很少,所以基础知识越多越好。你知道吗
这是我的循环:
while True:
ret, frame = cap.read()
fgmask = fgbg.apply(frame)
cv2.imshow('Original', frame)
cv2.imshow('Masked', fgmask)
average = (np.average(fgmask))
average_int = int(average)
result_array = np.append(result_array, average_int)
print(result_array)
希望一切都清楚,如果你需要更多的信息请告诉我。你知道吗
使用
find_peaks_cwt
从scipy.signal
得到所有峰的位置,然后 计算差异借鉴@c2huc2hu在评论中的建议。你知道吗
现在是高峰
它们是数组中峰值的索引。它本身应该作为你的计数器——在第一个峰值之前有五个元素,然后是十个(15-5),然后是十个(25-15)。你知道吗
您可以使用
这将产生
数组的局部极大值。你知道吗
相关问题 更多 >
编程相关推荐