实战 | 抖音百万点赞:视频的字符化

1.项目介绍

在聊视频的字符化处理之前,我们先看一下图像的字符化处理。

什么是图像的字符化,我们可以先看一下下面的两幅图,原图和字符化之后的图像:

2.pillow模块介绍

想要完成这个应用我们需要安装一个python工具包,pillow。

安装方式为:

pip install pillow

pillow是python中一个常用的图像处理工具包,一些pillow的基本操作如下:

# 导入模块

from PIL import Image

# 读取文件

img = Image.open('test.jpg')

# 保存文件

img.save(filename,"JPEG")

# 获取图片大小

(width,height) = img.size

# 获取图片的源格式

img_format = img.format

# 图片模式的转换,转化成灰度图像

img = img.convert("L")  

# 获取每个坐标的像素点的RGB值

r,g,b = img.getpixel((j,i))

# 重设图片大小

img = img.resize(width,height)

3.图像字符化程序

把图像字符化实际上就是先把图像灰度化,把彩色图片变为灰度图,然后获取到每个像素点的数值,然后不同数值的像素对应不同的ACSII码字符。我封装了一个convert函数,只要传入图片路径就可以返回生成的字符化的数据,得到图片字符化之后的数据可以保存到文本文件中。

# 导入模块

from PIL import Image

    # 转换函数

    def convert(img):

    # 要索引的字符列表

    ascii_char =

    list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~            <>i!lI;:,\"^`'. ")

    # 字符长度

    length = len(ascii_char)

    # 读取图像文件

    img = Image.open(img)    

    # 获得图片的宽和高

    (width,height) = img.size

    # 对图像进行一定缩小

    img = img.resize

    ((int(width*0.16),int(height*0.08)))

    # 转为灰度图像

    img = img.convert("L")  

    txt = ""

    for i in range(img.size[1]):

        for j in range(img.size[0]):

            # 获取每个坐标像素点的灰度

            gray = img.getpixel((j, i))  

            # 获取对应坐标的字符值

            unit = 256.0 / length

            txt += ascii_char[int(gray / unit)] 

        txt += '\n'

    return  txt



# 传入需要转换的原始图片

txt = convert('test.jpg')

# 把转换后的字符存入txt文件

f = open("convert.txt","w")

f.write(txt)            

f.close()

4.更进一步,视频图像字符化

既然图像可以字符化,那么视频是由一帧一帧的图像组成的,自然也可以实现字符化的效果。

可以使用opencv不断读取一帧一帧的视频内容,然后转换为字符串,接下来通过命令行不断打印出转换后得到的字符串,最后再配上对应的音乐,就可以发抖音啦!

下面是我对抖音一个千万次点赞视频做的简单的字符化处理,可以看下。

(微信后台上传视频被压缩,不太清晰,见谅)
抖音超火字符化视频

项目打包

关注公众号:X人工智能学院
后台回复 :1109 领取项目资料包(可直接运行)

猜你喜欢

转载自blog.csdn.net/t5131828/article/details/84748784
今日推荐