python实战操作 (python实战练习题用什么软件)

原创首发

前段时间,有个武大学生做了一个樱花开放视频,视频正是由无数个“武汉加油”组成,非常激励人心。

这位学生也很友好地把代码跟大家分享了一下,感兴趣可以自己搜源代码学习下。

python字符动画教程,python节点视频

python字符动画教程,python节点视频

本人自己也研究了下,发现不难。实际上,作者将一个视频的每帧图片的像素值赋予字符,使之整体看起来像一幅画。

过程大致可以分为4步:

1.获取原视频每帧图片

2.将图片像素值(如颜色)赋予充满字符的文本

3.将文本转化成图片

4.将图片合并成视频

我将原作者100多行代码优化了下,30行搞定

代码如下:

from PIL import Image,ImageDraw,ImageFont

import cv2

import numpy

video= cv2.VideoCapture('football.mp4')

FrameNumber =video.get(7)

counts=0

fps = 30

newvideo = cv2.VideoWriter('new2.mp4', cv2.VideoWriter_fourcc(*'XVID'), fps, (360,360))

while True:

ret,image = video.read()

if ret:

image = image[:,:,(2,1,0)]

blank = Image.new("RGB", [len(image[0]),len(image)], "white")

drawObj = ImageDraw.Draw(blank)

n = 10

font = ImageFont.truetype('C:/Windows/Fonts/Microsoft YaHei UI/msyhbd.ttc',size=1)

for i in range(0, len(image),n):

for j in range(0, len(image[i]), n):

text = '*今条头日**'

drawObj.ink = image[i][j][0] + image[i][j][1]*256 + image[i][j][2]*256*256

drawObj.text([j,i], text[int(j/n)%len(text)],font=font)

img = cv2.cvtColor(numpy.asarray(blank),cv2.COLOR_RGB2BGR)

newvideo.write(img)

counts+=1

print("转化进度",counts,"/",FrameNumber)

else:

break

print("结束")

newvideo.release()

我用“*今条头日**”字符和一个踢足球的视频做了演示,效果如下:

视频加载中...

喜欢的,给我点个赞好吗?