[项目实训]——提取gif片段

本文介绍了一个项目实战过程,通过分析视频帧位置和关键帧信息,从h5文件中提取关键帧数据,进而创建GIF动态图。首先获取帧位置,接着读取h5文件中的关键帧数据,存储到data数组。随后处理原视频,结合关键帧信息,最终将结果保存为gifFram.npy,并使用该数据生成视频片段。
摘要由CSDN通过智能技术生成

思路: 结合原文件、场景的帧位置和存储是否是关键帧的数组,来生成gif
首先得到帧位置的代码

datasetF = h5py.File('csv/changan12NewALL.h5', 'r')
#这里的h5文件是之前自己生成的h5文件
dataFeature=datasetF['video_1']['features'][...]
#之后就用dataFeature得到场景的帧位置

之前确认是否是关键帧的数据储存在machine_summary中,这里也会利用h5文件再把这个数据提取出来,将关键帧单独提取出来
相关代码:

dirsSummary = os.listdir('/opt/data/private/xuyunyang/Video-Summarization-Pytorch/output/changan')

这里的h5文件就是有关键帧的代码片段,至于为什么是一个文件夹,是因为此项目第一步实际上是对视频进行场景切分,第二步才是提取关键帧,生成gif片段,这个过程中会生成很多片段的h5文件,放在一个文件夹中

dirsSummary.sort()
for file in dirsSummary:
    datasetSummary = h5py.File('/opt/data/private/xuyunyang/Video-Summarization-Pytorch/output/changan/'+file, 'r')
    tempD=datasetSummary['video_1']['machine_summary'][...]
    #for num in datasetSummary['video_1']['machine_summary'][...]:
    for num in tempD:
        data.append(num)

    for nn in range(tempShot[temmpShotNum+1]-tempShot[temmpShotNum]-len(tempD)+1):
        data.append(0)

    temmpShotNum=temmpShotNum+2

提取了关键帧的相关数据,此时储存在了data的数组中
然后是原视频的相关操作

dataset = []
path='video/changan12NewALL.mp4'
cap = cv2.VideoCapture(path)
frame_count = cap.get(cv2.CAP_PROP_FRAME_COUNT)
# 获取视频宽度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取视频高度
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
new_width=int(frame_width*0.5)+1
new_hight=int(frame_height*0.5)+1
fps = cap.get(cv2.CAP_PROP_FPS) #视频平均帧率

count=0
success=1
while(success):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值