项目实训(十)—提取视频特征

本文介绍了如何通过GoogLeNet网络提取视频特征来实现智能预览功能,即根据视频进度条展示相似场景片段,并在用户点击时跳转至对应场景。内容包括初始化Extract_Feature类,创建并保存每个视频的特征值到h5文件,以及逐帧处理视频进行特征提取的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言:

为了实现智能预览功能:将与视频进度条所在的视频片段的场景相似的场景视频展示给用户,即用户看到某个场景片段的同时也会看到相似的场景片段,并且当点击某个相似场景片段时,进度条会跳转到该场景片段。

提取视频特征:

使用 googlenet 网络进行特征的提取

Extract_Feature 类初始化函数(每个场景视频的图像的特征值保存都在一个h5文件中):

    def __init__(self, video_path, save_path):
        self.resnet = ResNet()
        self.google = googlenet(pretrained=True)
        self.google.float()
        self.google.cuda()
        self.google.eval()

        self.video_list = []
        self.video_path = ''
        self.h5_file = h5py.File(save_path, 'w')

        self._set_video_list(video_path)

获取所有的场景视频,创建相应的h5文件:

    def _set_video_list(self, video_path):
        # 如果video_path是目录,获取目录下的所有文件名并排序
        if os.path.isdir(video_path):
            self.video_path = video_path
            self.video_list = os.listdir(video_path)
            self.video_list.sort()
        else:
            self.video_path = ''
            self.video_list.append(video_path)

        for idx, file_name in enumerate(self.video_list):
            # H5PY采用create_group命令进行创建
            self.h5_file.create_group('video_{}'.format(idx + 1))

对图像进行特征提取:

    def _extract_feature(self, frame):
        # 改变图像的颜色空间
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        # 对图片进行缩放
        frame = cv2.resize(frame, (224, 224))
        EF = [frame[:, :, 0], frame[:, :, 1], frame[:, :, 2]]

        EF = np.array(EF)
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值