Python实战案例,CV2模块,Python实现抖音字符视频

前言 利用Python实现抖音字符视频。废话不多说。
让我们愉快地开始吧~
开发工具 Python版本: 3.6.4
相关模块:
cv2模块;
【Python实战案例,CV2模块,Python实现抖音字符视频】PIL模块;
numpy模块;
以及一些Python自带的模块。
环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可。
主要用到的库有cv2,pillow库。
原视频如下,直接抖音下载的。
视频转图片 运行下面这个命令,即可成功安装cv2这个库。

pip3 install opencv-python

或者下个.whl格式来安装
代码实现如下:
import cv2 import os# 在当前目录下新建文件夹 folder_path = "img_bear/" os.makedirs(folder_path) # 进行视频的载入 vc = cv2.VideoCapture('bear.mp4') c = 0 # 判断载入的视频是否可以打开 ret = vc.isOpened() # 循环读取视频帧 while ret: c = c + 1 # 进行单张图片的读取,ret的值为True或者Flase,frame表示读入的图片 ret, frame = vc.read() if ret: # 存储为图像 cv2.imwrite('img_bear/'+str(c) + '.jpg', frame) # 输出图像名称 print('img_bear/'+str(c) + '.jpg') # 在一个给定的时间内(单位ms)等待用户按键触发,1ms cv2.waitKey(1) else: break # 视频释放 vc.release()

生成了369张图片
Python实战案例,CV2模块,Python实现抖音字符视频
文章图片

图片转字符 普通图片转字符图片主要使用了pillow库。
对图片做灰度处理,然后根据图片像素点的灰度值,添加对应的字符。
代码实现
from PIL import Image, ImageDraw, ImageFont import numpy as np import os# 创建字符图片文件夹 folder_path = "bear/" os.makedirs(folder_path) for i in range(1, 1000): filename = 'img_bear/' + str(i) + '.jpg' # 字符列表 ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI; :,\"^`'. ") # 判断图片是否存在 if os.path.exists(filename): # 将图片转化为灰度图像,并重设大小 img_array = np.array(Image.open(filename).resize((70, 70), Image.ANTIALIAS).convert('L')) # 创建新的图片对象 img = Image.new('L', (560, 560), 255) draw_object = ImageDraw.Draw(img) # 设置字体 font = ImageFont.truetype('consola.ttf', 10, encoding='unic') # 根据灰度值添加对应的字符 for j in range(70): for k in range(70): x, y = k * 8, j * 8 index = int(img_array[j][k] / 4) draw_object.text((x, y), ascii_char[index], font=font, fill=0) name = 'bear/' + str(i) + '.jpg' print(name) # 保存字符图片 img.save(name, 'JPEG')

生成了369字符图片
Python实战案例,CV2模块,Python实现抖音字符视频
文章图片

字符转视频 使用cv2库,将字符图片转化为视频。
代码实现
import cv2 import os# 设置视频编码器,这里使用使用MJPG编码器 fourcc = cv2.VideoWriter_fourcc(*'MJPG') # 输出视频参数设置,包含视频文件名、编码器、帧率、视频宽高(此处参数需和字符图片大小一致) videoWriter = cv2.VideoWriter('bear_character.avi', fourcc, 20.0, (560, 560))for i in range(1, 1000): filename = 'bear/'+str(i)+'.jpg' # 判断图片是否存在 if os.path.exists(filename): img = cv2.imread(filename=filename) # 在一个给定的时间内(单位ms)等待用户按键触发,100ms cv2.waitKey(100) # 将图片写入视频中 videoWriter.write(img) print(str(i) + '.jpg' + ' done!') # 视频释放 videoWriter.release()

本文源码详见个人主页简介获取
成功生成字符视频

    推荐阅读