python读取mp4视频_如何读取由scikit图像处理的mp4视频?

Imageiopython包应该做您想要的事情。下面是使用此包的python片段:import pylab

import imageio

filename = '/tmp/file.mp4'

vid = imageio.get_reader(filename, 'ffmpeg')

nums = [10, 287]

for num in nums:

image = vid.get_data(num)

fig = pylab.figure()

fig.suptitle('image #{}'.format(num), fontsize=20)

pylab.imshow(image)

pylab.show()

ynfsE.png

QVMyZ.pngfor i, im in enumerate(vid):

print('Mean of frame %i is %1.1f' % (i, im.mean()))

要安装imageio,可以使用pip:pip install imageio

另一个解决方案是使用moviepy(它使用类似的代码来读取视频),但我认为imageio更轻,可以完成任务。

对第一条评论的响应

为了检查整个文件的标称帧速率是否相同,可以在迭代器中计算帧数:count = 0

try:

for _ in vid:

count += 1

except RuntimeError:

print('something went wront in iterating, maybee wrong fps number')

finally:

print('number of frames counted {}, number of frames in metada {}'.format(count, vid.get_meta_data()['nframes']))

In [10]: something went wront in iterating, maybee wrong fps number

number of frames counted 454, number of frames in metada 461

为了显示每个帧的时间戳:try:

for num, image in enumerate(vid.iter_data()):

if num % int(vid._meta['fps']):

continue

else:

fig = pylab.figure()

pylab.imshow(image)

timestamp = float(num)/ vid.get_meta_data()['fps']

print(timestamp)

fig.suptitle('image #{}, timestamp={}'.format(num, timestamp), fontsize=20)

pylab.show()

except RuntimeError:

print('something went wrong')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值