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,一经查实,立即删除!

相关文章

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

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

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

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

OpenCV坐标体系的初步认识

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

在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…

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

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

三层架构——配置文件

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() — 线程…

MsWord 操作总结

转自&#xff08;http://www.cnblogs.com/eye-like/p/4121219.html&#xff09; Msdn上的word操作api&#xff08;不过只有英文版&#xff0c;英文差的先闪过&#xff09; Word2007的API&#xff1a;http://msdn.microsoft.com/en-us/library/bb257531(voffice.12).aspxWord201…

两数之和 python_同一屏幕播放两个视频 视频左右两个画面或视频上下两个画面如何制作...

咱们在网上经常可以看到一些视频画面是可以在同一屏幕播放两个视频&#xff0c;有的是视频左右两个画面或视频上下两个画面这些是如何制作的呢&#xff0c;其实熟悉视频编辑软件的网友应该会比较了解这些操作&#xff0c;好嘞&#xff0c;来&#xff0c;现在就让小编来演示一下…

dlib人脸特征点对齐

前面我们介绍了使用dlib进行人脸检测&#xff0c;下面我们给出如何使用dlib进行人脸特征点检测。我们直接贴出代码。我们的代码包括如下几部分功能&#xff1a; 检测单张图片检测一个视频检测一个camera 先给出代码&#xff1a; #include <dlib/image_processing/frontal_…

《LoadRunner 12七天速成宝典》—第2章2.6节第二个性能测试案例

本节书摘来自异步社区《LoadRunner 12七天速成宝典》一书中的第2章&#xff0c;第2.6节第二个性能测试案例&#xff0c;作者陈霁&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.6 第二个性能测试案例云云&#xff1a;烤鱼吃得很爽。 恋恋&#xff1a;就…

MongoDB_1

突然想去看下MongoDB的东西&#xff0c;于是有了这篇文章。其实很早以前就看过一些关于NoSql的文章&#xff0c;还记得当时里面有介绍MongoDB的&#xff0c;多瞅了2眼&#xff0c;并且在Window下安装了MongoDB的驱动&#xff0c;小玩了会。今天重新翻出来&#xff0c;没成想在命…

pyqt5从子目录加载qrc文件_实战PyQt5: 045-添加资源文件

添加资源文件在使用PyQt进行图形界面开发的时候不免要用到一些外部资源&#xff0c;比如图片&#xff0c;qss配置文件等。在前面代码中&#xff0c;遇到这类问题&#xff0c;我们使用绝对路径的方式来解决&#xff0c;这种方式&#xff0c;本身有其不方便之处(比如&#xff0c;…

西门子ddc_铁门关西门子两通电动阀VVF42.25-10C+SKD60西

铁门关西门子两通电动阀西SIEMENS/西门子电动温控阀、控制箱、电动蝶阀、电动球阀、超声波热量表、超声波流量计、电磁流量计阀体灰口铸铁 EN-GJL-2502.霍尼韦尔主营&#xff1a;楼宇资料系统、热网自控系统、风机盘管电动两通阀、空气压差开关、水流开关、电动执行器、风阀执行…

JS-键盘事件之方向键移动元素

注意三点&#xff1a; 1&#xff1a;事件名称onkeydown。 2&#xff1a;事件加给document&#xff0c;而非window。 3&#xff1a; 把元素的top&#xff0c;left值分别用offsetTop&#xff0c;offsetLeft来设定。 <!DOCTYPE html> <html><head><meta char…

Swift学习字符串、数组、字典

一.字符串的使用 let wiseWords "\"I am a handsome\"-boy" var emptyString "" if emptyString.isEmpty{ println("这是一个空值") }简单说明&#xff1a;isEmpty方法是用来判断字符串是否为空值的&#xff0c;之后会执行if语句中的…

python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用

最近在做一些数据处理和计算的工作&#xff0c;因为数据是以.CSV格式保存的&#xff0c;因此刚开始直接用Excel来处理。 但是做着做着发现重复的劳动&#xff0c;其实并没有多大的意义&#xff0c;于是就想着写个小工具帮着处理。 以前正好在一本书上看到过&#xff0c;使用Pyt…

halcon/c++接口基础 之 halcon初认识

从今天开始&#xff0c;开始更新博客&#xff0c;主要分享自己最近正在翻译的Halcon/C教程。先给出第一篇文章&#xff0c;由于此文章&#xff0c;是用latex写的&#xff0c;直接导成html&#xff0c;保存在七牛云存储上&#xff0c;所以直接点击链接就看到&#xff0c;后面我将…