手把手教你如何绘制自己的跳舞词云图~

简介: 首先我们要先准备一个热舞视频,从哪里下载的都可以,我是用You-Get从B站上下载的,命令如下:

01下载视频


首先我们要先准备一个热舞视频,从哪里下载的都可以,我是用You-Get从B站上下载的,命令如下:


you-get url


1.gif

you-get是第三方库,需要读者用pip进行手动安装,它的更多用法可以看看这篇文章下载全网音视频资源的神器—You-get。


02分割视频


下载好视频后,我们要对其进行分割处理,将其变成一张一张的图片,代码如下:


import cv2
vc = cv2.VideoCapture(r'美女跳舞视频.flv')  # 读取视频文件
n = 1# 计数
a, b = vc.read()
timeF = 10# 视频帧计数间隔频率
num = 0
while a:  # 循环读取视频帧
   a, b = vc.read()
   if (n % timeF == 0):  # 每隔timeF帧进行存储操作
       num += 1
       cv2.imwrite(f'{num}.jpg',b)  # 存储为图像
   n += 1
   cv2.waitKey(1)
vc.release()


让我们来看看效果:


39.png


03人物抠像


视频现在已经分割成一张一张的图片了,我们要把人物给抠出来,这样方便我们进行词云图绘制。


这里我是借用的百度API进行人物抠像,下面我们来看一下如何使用百度API。


首先,我们先打开百度AI界面,然后点击控制台。


40.png


跳转到登陆界面后,输入账号密码后,跳转到管理界面,此时我们点击人体分析。进入到人体分析应用界面。


41.png


然后创建一个应用(如已创建好,就点击管理应用)。


42.png



创建好后,进入到应用列表中,记下来‘AppID’、‘API Key’、‘Secret Key’这三个参数的值。在后面对API进行调用的时候需要用到这三个参数。


43.png


接下来,我们就可以开始调用API了,代码如下:


""" 读取图片 """
def get_file_content(filePath):
  with open(filePath, 'rb') as fp:
  return fp.read()image = get_file_content('example.jpg')
""" 调用人像分割 """
client.bodySeg(image);
""" 如果有可选参数 """
options = {}
options["type"] = "labelmap"
""" 带参数调用人像分割 """
client.bodySeg(image, options)


我们来看一下效果:


44.gif


我们使用的代码如下:


APP_ID = '你的APP_ID'
API_KEY = '你的API_KEY'
SECRET_KEY = '你的SECRET_KEY'
client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
path = r'美女跳舞视频'
img_files = os.listdir(r'img')
print(img_files)
for num in range(2, len(img_files) + 1):
   img = f'img_{num}.jpg'
   img_1 = cv2.imread(img)
   height, width = img_1.shape[:2]
   with open(img, 'rb') as fp:
       img_info = fp.read()
   seg_res = client.bodySeg(img_info)
   labelmap = base64.b64decode(seg_res['labelmap'])
   nparr = np.frombuffer(labelmap, np.uint8)
   labelimg = cv2.imdecode(nparr, 1)
   labelimg = cv2.resize(labelimg, (width, height), interpolation = cv2.INTER_NEAREST)
   new_img = np.where(labelimg  == 1, 255, labelimg)
   mask_name = path + 'mask_{}.png'.format(num)
   cv2.imwrite(mask_name,new_img)


让我们来看看效果,感觉还不错:


45.png


04词云绘制


现在人物也出来了,我们可以开始进行词云的绘制了,这里我们使用的是上次从抖音视频上爬取下来的评论,读者也可以替换成自己的评论,代码如下:


for num in range(1,23):
   with open("comment.txt", 'r') as f:
       job_title_1 = f.read()
   contents_cut_job_title = jieba.cut(job_title_1)
   contents_list_job_title = " ".join(contents_cut_job_title)
   img = f'mask_{num}.png'
   mask = 255 - np.array(Image.open(img))  # 相互转化
   wc = WordCloud(stopwords=STOPWORDS.add("一个"), collocations=False,
                  background_color="white",
                  font_path=r"K:\msyh.ttc",
                  width=400, height=300, random_state=42,
                  mask=mask
                  )
   wc.generate(contents_list_job_title)
   wc.to_file(f"ciyun_{num}.png")


让我们来看看效果:


46.png


05合成视频


词云图做好了,我们现在要将他们合成一个视频,这样就可以实现其跳舞的特效啦,代码如下:


import cv2
video_address = 'tiaowu.mp4'# 输出视频的保存路径
fps = 20# 帧率,可以调整
img_size = (1080, 1920)  #  图片的大小
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
videoWriter = cv2.VideoWriter(video_address , fourcc, fps, img_size)
for num in range(1,23):
   img_path = f'ciyun_{num}.png'
   frame = cv2.resize(cv2.imread(img_path), img_size)  
   videoWriter.write(frame)      # 合成视频
videoWriter.release()



06小结


1. 本文详细介绍了如何制作一款跳舞的词云图,有兴趣的读者可以尝试自己动手实验一下。

2. 本文绘制词云图的操作是最基本的,其实还可以更优,有兴趣的读者可以看看这篇文章基于微博评论的文本情感分析与关键词提取的实战案例~。

3. 让词云图绘制在人像中,要让PIL.Image与numpy.array之间进行相互转换。

4. 本文仅供学习参考,不做它用。

相关文章
|
关系型数据库 MySQL 数据库
|
10月前
|
存储 编解码 算法
推荐一款视频压缩神器!视频体积能压缩减少80%,支持指定大小压缩、批量压缩,压缩不可能不损失质量的。
推荐一款高效视频压缩工具,支持AVI、MP4、MKV等格式,可批量压缩,体积减少达80%。支持按比例或指定大小压缩,采用H.265等无损编码技术,在保证画质的前提下显著减小文件体积,操作简单,拖拽即可完成压缩,适合日常分享与存储。
890 0
|
IDE 开发工具 开发者
手把手教你安装PyCharm 2025:开发者的Python IDE配置全流程+避坑指南
本教程详细介绍了PyCharm 2025版本在Windows系统下的安装流程及配置方法,涵盖AI代码补全与智能调试工具链等新功能。内容包括系统要求、安装步骤、首次运行配置(如主题选择与插件安装)、创建首个Python项目,以及常见问题解决方法。此外,还提供了切换中文界面和延伸学习资源的指导,帮助用户快速上手并高效使用PyCharm进行开发。
6746 61
|
存储 数据采集 数据可视化
Python爬取懂车帝/汽车之家评论并做竞品分析
Python爬取懂车帝/汽车之家评论并做竞品分析
|
机器学习/深度学习 C语言 计算机视觉
YOLOv11改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
YOLOv11改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
1516 11
YOLOv11改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
|
机器学习/深度学习 自然语言处理 算法
深度学习基础知识:介绍深度学习的发展历程、基本概念和主要应用
深度学习基础知识:介绍深度学习的发展历程、基本概念和主要应用
7639 0
|
负载均衡 算法 网络安全
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
阿里云平台WoSign品牌SSL证书是由阿里云合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品,用户在阿里云平台https://www.aliyun.com/product/cas 可直接下单购买WoSign SSL证书,快捷部署到阿里云产品中。
3357 8
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
|
存储 Java Linux
SpringBoot集成海康网络设备SDK
概述 设备网络SDK是基于设备私有网络通信协议开发的,为嵌入式网络硬盘录像机、NVR、网络摄像机、网络球机、视频服务器、解码器、报警主机、网络存储等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。 功能 图像预览, 文件回放和下载, 云台控制, 布防/撤防, 语音对讲, 日志管理, 解码卡, 远程升级, 远程重启/关闭, 格式化硬盘, 参数配置(系统配置, 通道配置, 串口配置, 报警配置, 用户配置), 多路解码器, 智能设备功能和获取设备能力集等。
3254 130
|
缓存 安全 数据挖掘
阿里云服务器目前活动中各实例规格适用场景汇总,选择指南参考
本文将基于2025年阿里云服务器相关活动的最新内容,对各个实例规格的适用场景进行详细汇总,并提供选择指南参考,帮助用户轻松选购到最适合自己的云服务器实例。
|
自然语言处理 数据可视化 搜索推荐
手把手教你使用Python打造绚丽的词云图
手把手教你使用Python打造绚丽的词云图
1457 0
手把手教你使用Python打造绚丽的词云图

热门文章

最新文章