python是一款功能强大的数据分析工具,我们在平时的工作和生活中经常会用到。但是你知道如何使用python来提取视频中的素材吗?小编今天跟大家分享的就是如何使用python简单快速地提取电影中的片段,学会之后,能够省去我们剪辑的麻烦哦。
以下内容来源: Python的乐趣
作者: 一粒米饭
在上一篇中实现了基于人脸识别提取人物片段的功能,但是在实践过程中发现,如果是一部电影,那么提取到的片段太多了。为了找女神的电影片段,还要在辣么多剪辑中苦苦手工筛选,这个不是一个优秀的程序员应该做的。
经过一番实践和探索,发现了一个强大的库,叫做face_recognition。
本菜鸟也尝试过用opencv识别出图像,通过图像指纹计算出相似度,抑或通过图片向量的余弦相似度计算,奈何实现复杂,效果也不如face_recognition,只好弃暗投明。
face_recognition使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild benchmark)上的准确率高达 99.38%。
项目地址:https://github.com/ageitgey/face_recognition#face-recognition
官方介绍了face_recognition以下基本功能:
1.1 找出图片中的人脸
1.2 找到并且控制图像中的脸部特征
1.3 识别图片中的人脸
在本文中使用的就是它的第三个功能识别图片中的人脸。
face需要依赖于dlib,dlib的安装参考How to install dlib v19.9 or newer from github on macOS and Ubuntu
face_recognition的使用需要基于Python3.3以上或Python2.7,操作系统为MacOS或Linux(Windows不提供官方支持)。安装命令如下:
$ pip install face_recognition
安装完成后可以在命令行使用face_recognition或在Python中调用。以在Python中“识别女神李一桐”为例,其过程如下:
Python代码如下:
import face_recognition # 初始化 picture_of_liyitong = face_recognition.load_image_file("yilitong.jpg") liyitong_encoding = face_recognition.face_encodings(picture_of_liyitong)[0] # 加载对比图片 unknown_picture = face_recognition.load_image_file("unknown.jpg") unknown_face_encoding = face_recognition.face_encodings(unknown_picture)[0] # 用`compare_faces`方法继续对比得到结果, # 值得注意的是第一个参数是一个列表,可以传多个图片参数进行对比 results = face_recognition.compare_faces([liyitong_encoding], unknown_face_encoding) if results[0] == True: print("图片中包含女神") else: print("未找到女神!")
提取女神视频的过程与之前《从视频中自动提取人物的视频片段》的思路类似。
1.1. 获取图片,用moivepy读取视频,用iter_frames方法从中获取图片帧;
1.2. 标记时间点,利用opencv识别图片中的人物并标记人物出现的起始时间点和结束时间点,并将这些时间点放到到一个列表中。
1.3. 视频截取,用moivepy将上一步中标记的时间片段从视频中截取出来,最后筛选出需要的视频片段即可。
只是将上面第二步中“用opencv识别图片中的人物”改为“用face_recognition进行对比”。代码实现如下:
from moviepy.editor import VideoFileClip from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip import face_recognition def contain_godness(img, godness_encoding): face_locations = face_recognition.face_locations(img) is_godness = False for (top_right_y, top_right_x, left_bottom_y,left_bottom_x) in face_locations: unknown_image = img[top_right_y-50:left_bottom_y+50, left_bottom_x-50:top_right_x+50] unknown_encoding = face_recognition.face_encodings(unknown_image) if unknown_encoding: results = face_recognition.compare_faces([godness_encoding], unknown_encoding[0]) print(results) is_godness = results[0] return is_godness def find_durations(clip, godness_encoding): """ 从视频中搜索女神片段 """ duration_list = [] # 存储片段时间列表 start_time = 0 # 记录片段开始时间, 以毫秒为单位 end_time = 0 # 记录片段结束时间, 以毫秒为单位 last_index = 0 for i, img in enumerate(clip.iter_frames(fps=20)): print(i) flag = contain_godness(img, godness_encoding) if flag and start_time == 0: start_time = i / 20 last_index = i if start_time > 0 and not flag: end_time = i / 20 duration_list.append([start_time, end_time]) # 重置开始时间和结束时间 start_time = end_time = 0 # 打印片段时间列表并返回 print(duration_list) return duration_list if __name__ == "__main__": filename = "demo.mp4" clip = VideoFileClip(filename) godness_image = face_recognition.load_image_file("godness.png") godness_encoding = face_recognition.face_encodings(godness_image)[0] durations = find_durations(clip, godness_encoding) for d in durations: start_t, end_t = d ffmpeg_extract_subclip(filename, start_t, end_t)
数据分析咨询请扫描二维码
数据开发工程师在当今数据驱动的世界中扮演着至关重要的角色。他们不仅负责数据的采集和处理,还在数据仓库建设、系统开发和数据 ...
2024-10-20在当今快速变化的数字经济时代,数字化转型已经成为企业实现持续增长和竞争优势的关键。数字化转型不仅仅是技术的变革,更是组织 ...
2024-10-19在当今快速发展的科技时代,数字经济已成为全球经济的重要组成部分。选择数字经济专业,不仅能为你打开通往多个行业的大门,还能 ...
2024-10-18学习统计学与大数据分析具有显著的优势,能够帮助你走向高薪岗位。在数字化时代背景下,统计学和大数据分析展现出强大的就业潜力 ...
2024-10-18在当今的数字时代,数据科学与大数据技术专业的就业方向极为广泛,涵盖了多个领域和岗位。随着数据成为企业决策的重要依据,行业 ...
2024-10-18大数据技术与应用领域正在迅速发展,成为现代经济和科技发展的重要驱动力。随着数据量的爆炸式增长,各行各业对大数据专业人才的 ...
2024-10-18在当今数据驱动的商业环境中,数据分析软件已成为企业决策过程中不可或缺的工具。随着数据量的激增和分析需求的复杂化,选择合适 ...
2024-10-18在当今数据驱动的世界中,数据分析已成为许多行业不可或缺的一部分。无论是企业决策、市场营销,还是产品开发,数据分析都能提 ...
2024-10-18数据分析在现代企业中扮演着至关重要的角色,帮助企业在竞争激烈的市场中做出明智的决策。随着数据量的不断增长,企业需要依赖先 ...
2024-10-18CDA(Certified Data Analyst)认证在数据分析领域具有显著的作用,具体包括以下几个方面: 1. 专业技能认可 CDA认证是数据分析 ...
2024-10-17选择适合自己项目的数据分析工具,需要考虑以下几个关键因素: 项目需求和目标:首先明确你的数据分析目标是什么,比如是进行数 ...
2024-10-17数据科学与大数据技术专业详解 数据科学与大数据技术专业是一门跨学科的专业,结合了数学、统计学、计算机科学等多个领域的知识 ...
2024-10-17大数据与会计专业的结合,是信息技术与财务管理领域的一次重要融合。这一专业旨在培养具备会计财务理论知识、大数据分析处理技术 ...
2024-10-17CDA认证在企业数字化转型中扮演着重要的角色,主要体现在以下几个方面: 人才培养与技能提升:CDA认证通过系统的培训和考核,帮 ...
2024-10-17CDA(Certified Data Analyst)认证在数据分析领域具有一系列的具体应用和优势,这些优势不仅体现在个人职业发展上,也体现在行 ...
2024-10-17数学与应用数学专业的毕业生在金融行业有多种职业路径和晋升机会。以下是一些具体的职业路径和晋升机会: 金融分析师:负责分析 ...
2024-10-17选择数据科学与大数据技术专业的未来就业前景非常乐观,以下是一些关键点: 1. 就业市场需求 数据科学与大数据技术专业的毕业生 ...
2024-10-17如何选择数据科学与大数据技术专业? 选择数据科学与大数据技术专业时,可以从以下几个方面进行考虑: 了解专业内容: 数据科 ...
2024-10-17如何选择数据科学与大数据技术专业? 选择数据科学与大数据技术专业时,可以从以下几个方面进行考虑: 了解专业内容: 数据科 ...
2024-10-17Hadoop安装与HDFS、MapReduce实验:HDFS存取代码分析与Word Count程序代码分析 Hadoop大数据分析——HDFS存取代码分析启动HDFS和 ...
2024-10-17