抖音字符视频在去年火过一段时间。

反正我是始终忘不了那段极乐净土的音乐...

这一次自己也来实现一波,做一个字符视频出来。

主要用到的库有cv2,pillow库。

原视频如下,直接抖音下载的,妥妥的水印。

不过并不影响本次的操作。

/ 01 / 视频转图片

在Pycharm上直接安装cv2库是成功不了的,具体什么原因我也不清楚。

经过我的实践,发现只需在Pycharm的虚拟环境下。

运行下面这个命令,即可成功安装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张图片。

呆萌呆萌的××熊,我是不知道什么品种的熊...

/ 02 / 图片转字符

普通图片转字符图片主要使用了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张。

/ 03 / 字符转视频

接下来使用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()

最后成功生成字符视频。

这里懒得去添加原来的BGM,所以凑合着看吧。

据说眯眼看,效果更佳。

/ 04 / 总结

相关的视频以及代码已上传公众号。

公众号回复「字符」即可获取。

最后在此给自己做的抖音视频拉个票~

看过上一期送书推文的读者应该知道,就是那个抖音视频大赛。

大家要是有兴趣也可以去参加,具体的见上条送书推文。

其中文末的视频是我做的,而且我也去参加了,能不能拿大奖就靠大家了。

公众号「数据森麟」的作者也参加了,了解这个公众号的读者,也可以去一睹大佬的真容,帮忙点赞,哈哈。

对于就开过一次赞赏的我而言,大家的抖音点赞就是对我最大的赞赏。

晚上的时候,还找了几个问过我问题的读者,帮忙点赞,大家也挺配合的。

其中有个小妹妹,手机上没抖音,还立马去下了一个,来帮我点赞。

心中有一种莫名的感动,感谢大家的支持。

具体的见上图,就是那个蓝色的模糊的视频,不过就视频的效果而言,应该堪称大片。

手机上有抖音的就帮忙点个赞,没抖音的就算啦。

毕竟少刷抖音,多看书。这句话,一点毛病也没有。

万水千山总是情,点个「好看」行不行。

python写抖音网站_用Python生成抖音字符视频!相关推荐

  1. 怎么用python写脚本刷金币_【python入门】之教你编写自动获取金币脚本

    最近看到个特别全面源码分享网站,刚好有个项目是一直想做但是没有头绪的,就想下载学习一下.注册账号后,发现还需要若干金币.后来发现可以通过每隔一定时间发心情状态来获得金币,就打算写一个自动发心情状态的 ...

  2. python写一个表白程序_用Python写一个能算出自己年龄的小程序

    用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...

  3. python写游戏棋牌游戏_使用python实现简单五子棋游戏

    使用python实现简单五子棋游戏 发布时间:2020-08-29 06:12:30 来源:脚本之家 阅读:73 作者:weixin_42874933 用python实现五子棋简单人机模式的练习过程, ...

  4. python写一个ssh工具_用Python写个自动ssh登录远程服务器的小工具

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...

  5. python大神交流网站_学习Python必去的8个网站

    作为一个现时代的程序员初学者,除了看书之外,互联网的学习手段也是断不能少的! 以下这些网站,虽说不上全方位的满足你的需求,但是大部分也都能! 0.国外的大神GitHub : https://githu ...

  6. python写抢火车票软件_用 Python 代码自动抢火车票

    市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单.下面使用Python模拟抢票程序,给大家揭秘抢票到底是怎么回事. 该代码仅供参考,主要用于大家沟通 ...

  7. 用python写跑酷游戏脚本_用python写游戏之2D跑酷游戏(二)

    这篇文章介绍2D跑酷游戏中,添加地板资源, 给主角附加重力作用,以及添加游戏控制器和游戏场景的切换. 废话不多说,直接开始. 添加地板资源 定义地板类,继承自pygame.sprite.Sprite ...

  8. python写一个crm系统_用Python打造一个CRM系统(四)

    在上一篇中在本地进行初始化,并让项目顺利运行.在本篇中将实现一个线索管理模块,支持线索的增删改查. 新建线索应用模块 进入项目目录,使用django命令创建线索应用模块,命令如下: $ python ...

  9. 如何用python写查询名字程序_用Python写个迷你出门问问|10几行代码搞定

    上一篇讲了JSON文件的用法,小伙伴们感觉好像写的很不过瘾,后台有好几个小伙伴问我能不能再写一篇,其中还有两个小伙伴给我留言,问我什么是Web Api,好今天我会解释一下,同时利用百度开放的API写一 ...

最新文章

  1. 解决PyCharm ImportError: No module named tensorflow 详解
  2. 学python是看书还是看视频-学 Python 你觉得是看书还是看视频?
  3. Linux / 守护进程
  4. springboot集成swagger2,以及swagger-ui.html访问404的问题解决:拦截器造成的
  5. SQL Server 2005 的nvarchar(max),varchar(max)来救火
  6. java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息
  7. 隐藏文字的另一种方法
  8. 投票源码程序_基于用户投票的排名算法
  9. 嵌入式Linux系统编程学习之四Shell编程
  10. _.findIndex(array, [predicate=_.identity], [fromIndex=0])
  11. 20. 顺时针打印矩阵
  12. javascript美术馆
  13. linux编译生成动态库、静态库,以及使用
  14. C语言 牛顿法 解方程,如何用科学计算器求方程的解(牛顿法解方程具体步骤)...
  15. html怎么把网址设为首页,怎样让网站设为首页和加入收藏
  16. 【转】一起做RGB-D SLAM (1)
  17. android菜鸡提升之路---实现一个积木拼图游戏
  18. Electron在win7上加载plotyjs失败的解决方法
  19. 缝的是鞋,连的,却是人心。
  20. 诚之和:机器人送餐8K超高清直播,5G赋能智慧冬奥

热门文章

  1. 4G/5G多卡聚合设备为应急通信行业提供网络解决方案
  2. 零代码开发ERP管理系统
  3. openEuler系统安装git详细操作步骤
  4. java求圆的周长和面积_Java学习之路----计算圆形的面积和周长
  5. C语言模块化编程样例
  6. 性价比高台式计算机,2020性价比高的台式电脑排行推荐
  7. 计算机科学与技术学士论文,计算机科学与技术毕业论文
  8. 敏捷方法的价值观与原则汇编
  9. Linux下的磁盘克隆,10 个免费的磁盘克隆软件
  10. 铁路现代化技术系统整理(五)之CTCS