引言:
为了实现智能预览功能:将与视频进度条所在的视频片段的场景相似的场景视频展示给用户,即用户看到某个场景片段的同时也会看到相似的场景片段,并且当点击某个相似场景片段时,进度条会跳转到该场景片段。
提取视频特征:
使用 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)