【整活】python实现肌肉金轮词云图视频,堪称中了金轮的毒

共 4414字,需浏览 9分钟

 ·

2021-06-09 02:17

点击上方AI算法与图像处理”,选择加"星标"或“置顶”

重磅干货,第一时间送达

一、前言

最近金轮(大司马)因为AI换脸《肌肉金轮》又火遍全网。

今天我利用周末的时间用AI技术整个活,娱乐的同时学点技术,秒啊!

大致要实现的效果是,在肌肉金轮的基础上,附上经典的语录。

二、实现的思路

1、获取素材

2、采用分割算法获取主体的mask

3、在 mask 上生成词云图

4、将词云图与原图融合

5、添加音频文件


三、代码实现


1、获取素材

包括:AI换脸后的视频、经典语录 txt 文件【文末附下载链接】

视频截图:

经典语录截图(这里我手动找了一些,大家可以自行搜索更多):

2、采用抠图算法获取主体的mask

1)首先从视频中获取每一帧图片

import cv2
cap = cv2.VideoCapture(r"output.mp4")num = 1while True: # 逐帧读取视频 按顺序保存到本地文件夹 ret, frame = cap.read() if ret: if 1 <= num < 1700: cv2.imwrite(f"./test_data/test_images/img_{num}.jpg", frame) # 保存一帧帧的图片 print(f'========== 已成功保存第{num}张图片 ==========') num += 1 else: breakcap.release()   # 释放资源

2)使用BASNet(CVPR 2019)的分割算法,抠图主体

环境配置:

Python 3.6numpy 1.15.2scikit-image 0.14.0PIL 5.2.0PyTorch 0.4.0torchvision 0.2.1glob

这里我使用高版本的pytorch 依然可以用(torch 1.6.0 + torchvision 0.7.0)

克隆项目

git clone https://github.com/NathanUA/BASNet.git

下载必要的权重文件,并放置在路径saved_models/basnet_bsi/

并将视频中抽取的图片放置在BASNet 项目的 est_data/test_images 下(建议可以考虑删除 test_iamges 和 test_results 下提供的demo素材)

运行

python basnet_test.py

运行成果后即可在 test_results 文件下看到获取到的mask

3、在 mask 上生成词云图

代码:

# -*- coding: UTF-8 -*-
from wordcloud import WordCloudimport collectionsimport jiebaimport refrom PIL import Imageimport matplotlib.pyplot as pltimport numpy as np

# 读取数据with open('jinlun.txt') as f: data = f.read()
# 文本预处理 去除一些无用的字符 只提取出中文出来new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)new_data = "/".join(new_data)
# 文本分词seg_list_exact = jieba.cut(new_data, cut_all=True)
result_list = []with open('stop_words.txt', encoding='utf-8') as f: con = f.read().split('\n') stop_words = set() for i in con: stop_words.add(i)
for word in seg_list_exact: # 设置停用词并去除单个词 if word not in stop_words and len(word) > 1: result_list.append(word)
# 筛选后统计词频word_counts = collections.Counter(result_list)path = './wordcloud/'
for num in range(1, 1668): img = f'./test_data/test_results/img_{num}.png' # 获取蒙版图片 mask_ = 255 - np.array(Image.open(img)) # 绘制词云 plt.figure(figsize=(8, 5), dpi=200) my_cloud = WordCloud( background_color='black', # 设置背景颜色 默认是black mask=mask_, # 自定义蒙版 mode='RGBA', max_words=500, font_path='simhei.ttf', # 设置字体 显示中文 ).generate_from_frequencies(word_counts)
# 显示生成的词云图片 plt.imshow(my_cloud) # 显示设置词云图中无坐标轴 plt.axis('off') word_cloud_name = path + 'wordcloud_{}.png'.format(num) my_cloud.to_file(word_cloud_name) # 保存词云图片 print(f'======== 第{num}张词云图生成 ========')

4、将词云图与原图融合, 不好意思已中毒

代码:

import cv2
for i in range(1,1668): src1_path = "./test_data/test_images/img_{}.jpg".format(i) src1 = cv2.imread(src1_path) src2_path = "./wordcloud/wordcloud_{}.png".format(i) src2 = cv2.imread(src2_path)
dst = cv2.addWeighted(src1, 1, src2, 0.5,0) dst_img = "./result/{}.png".format(i) cv2.imwrite(dst_img,dst) print("img process {} !".format(dst_img))

# 输出视频的保存路径video_dir = 'result-1.mp4'# 帧率fps = 24# 图片尺寸test = cv2.imread("./test_data/test_images/img_1.jpg")x,y,_ = test.shape img_size = (y, x)
fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V') # opencv3.0 mp4会有警告但可以播放videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
for i in range(1, 1668): img_path = './result/' + '{}.png'.format(i) frame = cv2.imread(img_path) frame = cv2.resize(frame, img_size) # 生成视频 图片尺寸和设定尺寸相同 videoWriter.write(frame) # 写进视频里 print(f'======== 按照视频顺序第{i}张图片合进视频 ========')
videoWriter.release() # 释放资源

5、添加音频文件

import moviepy.editor as mpy
# 读取词云视频my_clip = mpy.VideoFileClip('result-1.mp4')# 截取背景音乐audio_background = mpy.AudioFileClip('output.mp4')audio_background.write_audiofile('output.mp3')# 视频中插入音频final_clip = my_clip.set_audio(audio_background)# 保存为最终的视频 动听的音乐!漂亮小姐姐词云跳舞视频!final_clip.write_videofile('final_video.mp4')

结果展示


代码和素材获取,点击上面的小卡片,回复“金轮”即可获取

参考:

https://yetingyun.blog.csdn.net/article/details/112209719

https://github.com/xuebinqin/BASNet


好的,今天的分享就到这里,如果喜欢记得关注我,给我一个三连,感谢

个人微信(如果没有备注不拉群!
请注明:地区+学校/企业+研究方向+昵称



下载1:何恺明顶会分享


AI算法与图像处理」公众号后台回复:何恺明,即可下载。总共有6份PDF,涉及 ResNet、Mask RCNN等经典工作的总结分析


下载2:终身受益的编程指南:Google编程风格指南


AI算法与图像处理」公众号后台回复:c++,即可下载。历经十年考验,最权威的编程规范!



下载3 CVPR2021

AI算法与图像处公众号后台回复:CVPR即可下载1467篇CVPR 2020论文 和 CVPR 2021 最新论文

点亮 ,告诉大家你也在看


    

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报