python刷抖音_用Python生成抖音字符视频!

wx_article_20190307202714_Bl5Lkw.jpg

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

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

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

主要用到的库有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张图片。

wx_article_20190307202714_YOjAKL.jpg

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

/ 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')

最后成功生成了字符图片。

wx_article_20190307202714_dhZKNg.jpg

和上面的原图一样,也是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 / 总结

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

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

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

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

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

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

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

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

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

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

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

wx_article_20190307202714_nB3SV6.jpg

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

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

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

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

--------------------- End ---------------------

往期精彩文章推荐:

【推荐】一个网站,解决你的论文下载、论文查重还有...

手把手教你抓取微博火锅信息Top3——火锅只能点三样

手把手教你用Fiddler+MongoDB抓取猫眼APP短评

Python大佬抓取房价信息带你开展多维度分析深圳房租

Python数据可视化:2018年电影分析

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【学习】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

变长参数

转载自&#xff1a;http://blog.csdn.net/tht2009/article/details/7019635 变长参数 设计一个参数个数可变、参数类型不定的函数是可能的&#xff0c;最常见的例子是printf函数、scanf函数和高级语言的Format函数。在C/C中&#xff0c;为了通知编译器函数的参数个数和类型可变…

第十七章 我国农业科学技术

农村改革解说&#xff08;专著&#xff09;第十七章 第十七章 我国农业科学技术 1、为什么说科学技术是生产力&#xff1f; 我们说科学技术是生产力&#xff0c;是因为在构成生产力的两个主要因素中&#xff0c;都包含着科学技术在内。 A、生产力中人的因素是同一定的科学技术紧…

《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.2 选购镜头时应注意的事项...

本节书摘来自异步社区出版社《淘宝网开店 拍摄 修图 设计 装修 实战150招》一书中的第1章&#xff0c;第1.2节&#xff0c;作者&#xff1a; 葛存山&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 选购镜头时应注意的事项 面对如此之多的镜头&#xf…

OpenCV中的神器Image Watch

Image Watch是在VS2012上使用的一款OpenCV工具&#xff0c;能够实时显示图像和矩阵Mat的内容&#xff0c;跟Matlab很像&#xff0c;方便程序调试&#xff0c;相当好用。跟VS2012配合使用&#xff0c;简直就是一款神器&#xff01;让我一下就爱上它了&#xff01; 下面介绍一些链…

python异步_Python通过Thread实现异步

当long函数耗时较长时&#xff0c;需要程序先向下执行&#xff0c;这就需要异步&#xff0c;改写代码如下&#xff1a; import _thread import time def long(cb): print (long execute) def fun(callback): time.sleep(5) result long end callback(result) _thread.start_ne…

SAM4E单片机之旅——13、LCD之ASF初步

在Atmel Studio 6中&#xff0c;集成了Atmel Software Framework&#xff08;ASF框架&#xff09;。通过它提供的库&#xff0c;可以很快速地完成新的项目。 这次的最终目标使用ASF在LCD上显示出文字“Hello World!”&#xff0c;现阶段目标是点亮LCD的背光&#xff0c;学习目标…

《HTML5与CSS3实战指南》——2.2 基本的HTML5模板

本节书摘来自异步社区《HTML5与CSS3实战指南》一书中的第2章&#xff0c;第2.2节,作者&#xff1a; 【美】Estelle Weyl , Louis Lazaris , Alexis Goldstein 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.2 基本的HTML5模板 在您学习HTML5和新技术时&#xff0c;您…

c# Message const

typeTMsg packed recordhwnd: HWND; //窗口句柄message: UINT;//消息常量标识符wParam: WPARAM ;// 32位消息的特定附加信息lParam: LPARAM ;// 32位消息的特定附加信息time: DWORD;//消息创建时的时间pt: TPoint; //消息创建时的鼠标位置end ; 消息中有什么&#xff1f;是否觉…

OpenCV坐标体系的初步认识

实验基础本次实验通过一个简短的例子&#xff0c;主要来说明下面4个问题&#xff1a; 1. 坐标体系中的零点坐标为图片的左上角&#xff0c;X轴为图像矩形的上面那条水平线&#xff1b;Y轴为图像矩形左边的那条垂直线。该坐标体系在诸如结构体Mat,Rect,Point中都是适用的。&…

python爬取知乎live_Python爬虫 - 简单抓取百度指数

前言有点忙&#xff0c;没空写东西&#xff0c;这是之前写的&#xff0c;加了些配图而已 这次要爬的网站是百度指数 正文 一、分析 打开网站(百度指数)&#xff0c;呈现出来是这样的 如果搜索的话就需要登陆了&#xff0c;如果没有什么特别频繁的请求的话&#xff0c;直接登陆复…

在Visual Studio上开发Node.js程序

在Visual Studio上开发Node.js程序 原文:在Visual Studio上开发Node.js程序【题外话】 最近准备用Node.js做些东西&#xff0c;于是找找看能否有Visual Studio上的插件以方便开发。结果还真找到了一个&#xff0c;来自微软的Node.js Tools for Visual Studio&#xff08;NTVS&a…

Oracle ASM 翻译系列第十一弹:高级知识 Offline or drop?

Offline or drop? 当一个ASM磁盘不可用时&#xff0c;ASM会把它从磁盘组里移除&#xff0c;对吗&#xff1f;要看情况&#xff0c;通常取决于ASM版本和磁盘组的冗余级别。因为一个external冗余的磁盘组会直接被dismount&#xff0c;所以主要关注normal和high冗余磁盘组的情况。…

net与树莓派的情缘-安装与卸载MySql(五)

安装MySql sudo apt-get install mysql-server 删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-get autoremove mysql-serversudo apt-get remove mysql-common //这个很重要上面的其实有一些是多余的。 清理残留数据 …

mpls工作原理通俗解释_用这两种方法向最终用户解释NLP模型的工作原理还是不错的...

点击上方关注&#xff0c;All in AI中国上周&#xff0c;我看了一个关于“NLP的实践特性工程”的演讲。主要是关于LIME和SHAP在文本分类可解释性方面是如何工作的。我决定写一篇关于它们的文章&#xff0c;因为它们很有趣、易于使用&#xff0c;而且视觉上很吸引人。所有的机器…

向往2的年代

1. JDBC 对插入大量数据如何处理&#xff1f; 2. JAVA反射的使用&#xff0c;如何获取一个java类的某个方法&#xff1f; 3. 数据库连接池&#xff08;优化&#xff09; 4. 分布式事务管理转载于:https://www.cnblogs.com/dragonflyyi/p/3564843.html

C++ limits头文件的用法(numeric_limits)

初学C的时候&#xff0c;对这个模板很陌生&#xff0c;不知道它到底是做什么用的&#xff0c;今天拿起《C标准程序库》&#xff0c;出现了它的讨论&#xff0c;所以决定好好研究一番。 1. numeric_limits是什么&#xff1f; &#xff08;A&#xff09;《C标准程序库》&#xff…

三层架构——配置文件

1、配置文件是什么&#xff1f; 配置文件是随安装程序一起被安装到计算机上的文件&#xff0c;里面存放着安装好的应用程序执行时所须要的參数。 应用程序配置文件是标准的XML文件&#xff0c;XML标记和属性是区分大写和小写的。它能够按须要更改&#xff0c;开发者可使用配置文…

《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...

本节书摘来异步社区《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》一书中的第2章&#xff0c;第2.4节&#xff0c;作者&#xff1a;邱毅凌&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 02-04项目范围&#xff08;Scope&#xff09;管理 嵌入式…

flex(入门)之timer的使用,键盘,鼠标的监听

package {import flash.display.Shape;import flash.display.Sprite;import flash.events.Event;import flash.events.KeyboardEvent;import flash.events.MouseEvent;import flash.events.TimerEvent;import flash.utils.Timer;import mx.controls.Label;//窗体大小&#xff0…

python 线程超时设置_python 条件变量Condition(36)

文章首发微信公众号&#xff0c;微信搜索&#xff1a;猿说python对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – 线程条件变量Condition.一.线程条件变量Condition相关函数介绍acquire() — 线程…