我正在使用视频文件。我有一个起始帧号。 x(比如说10)和停止帧没有。 y(比如说200)。我想拿起" n" x和y之间的帧(比如n = 8)。这些" n"在x和y之间,帧数应唯一和等间距。
请在Python 3.x中建议最快的方法。目前我正在使用这个:
list = random.sample(range(start_frame,stop_frame), int((stop_frame-start_frame)/n))
这给了我独特的帧但不是等间距。如何在起始帧和终止帧之间获得等间距帧。
答案 0 :(得分:1)
如果您愿意使用第三方库,可以使用NumPy。您可以使用numpy.linspace
将范围平均分为 n 组件:
import numpy as np
frames = np.linspace(10, 200, num=8)
print(frames)
[ 10. 37.14285714 64.28571429 91.42857143 118.57142857
145.71428571 172.85714286 200. ]
如果您需要整数,可以转换为int
:
print(frames.astype(int))
array([ 10, 37, 64, 91, 118, 145, 172, 200])
答案 1 :(得分:1)
如果您希望两个端点都具有包容性,那么您可以这样使 n = 8 帧从10到200:
x = 10
y = 200
n = 8
step = (y - x) / (n - 1)
frames = [x + step * i for i in range(n)]
print(frames)
[10.0, 37.14285714285714, 64.28571428571428, 91.42857142857143,
118.57142857142857, 145.71428571428572, 172.85714285714286, 200.0]