做刘教练的Python-Boys
本文是一个非常完整的Python实战项目,主要内容包含:
视频下载神器:you-get
you-get是一个下载视频的神器,安装之后一行代码即可下载视频
1 | you-get [url] |
1 | you-get https://www.bilibili.com/video/BV1yY4y1i7Pw?t=1079.2 # 一行代码下载视频 |
视频切割成图片
下面的代码实现的功能是将上面获取到的代码切割成一张张的图片:
1、opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头
- filename:打开的视频文件名
- device:打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头
2、videoCapture.read():表示读取视频的下一帧
- 第一个返回值为是否成功获取视频帧:True/False
- 第二个返回值为返回的视频帧:帧数
1 | import cv2 |
这样最终我们就将这个视频分成了835张图片
百度人像分割
实际使用
1、先在百度云平台创建人像分割实例
新建一个人像分割的实例,新注册用户可免费领取资源,官网地址:https://cloud.baidu.com/product/body/seg。下面是小编申请的一个实例:
注意点1:一定是安装baidu_aip库,而不是aip
1 | pip install baidu_aip # 安装库,一定要是baidu_aip |
注意点2:在当前路径下新建一个mask文件,用来存放分割后的图片。
下面是分割之后的二值图效果:
百度demo
具体的百度官方文档请参考:https://cloud.baidu.com/doc/BODY/s/4k3cpyner
百度官方的案例如下:
1 | # 官方demo |
注:返回的二值图像需要进行二次处理才可查看分割效果;灰度图和前景人像图不用处理,直接解码保存图片即可。
获取B站弹幕
接下来是获取上面视频的弹幕,请参考一位NLP大佬:https://github.com/godweiyang/bilibili-danmu
1 | import re |
合成词云图
弹幕的分词是自己的方法和收集的一份常用的停用词表:
1、分词使用的jieba分词。关于jieba分词的使用入门,参考:https://github.com/fxsjy/jieba
快速安装jieba:
1 | pip install jieba |
1 | import pandas as pd |
总共是10415个弹幕:查看前10条弹幕信息
2、实施分词
1 | stopwords = [i.strip() for i in open(r'/Users/peter/Desktop/spider/nlp_stopwords.txt').readlines()] |
3、统计词频
统计切割之后每个单词的总数:
显示出前80个词云图的效果:
1 | from pyecharts.globals import CurrentConfig, OnlineHostType |
效果是动态的:
采用的是wordcloud来绘制静态的词云图,并且保存到本地:
1 | wordcloud.WordCloud( |
通过下面的代码来生成词云图。注意点:需要新建一个目录wordcloud,来存放生成的词云图
1 | word_counts = collections.Counter(useful_result) # 筛选后统计词频 |
对应生成的词云图效果:
合成词云视频
基于上面的835张词云图来生成视频:
1 | import cv2 |
到达这个步骤我们完成了视频的生成,就只剩下添加【本草纲目】的音乐了
添加本草纲目.MP3
添加音频使用的是moviepy。详细使用文档参考官网:
中文:https://moviepy-cn.readthedocs.io/zh/latest/
英文:https://zulko.github.io/moviepy/install.html
先安装很简单:
1 | pip install moviepy |
1 | import moviepy.editor as mpy |
大功告成👏
整体细节
- 将you-get获取到的视频和【本草纲目.MP3】放到本地
- 本地需要建立3个文件,存放不同的图像
- 代码的步骤参考1-2-3-4-5-6部分;顺序一定不能乱