程序员可以没钱,但不能不骚

news/2024/10/23 9:39:06/

程序员不骚,那当什么程序员

640?wx_fmt=png

20180406

前言

程序员在人们的映像中是一个高智商、但同时又很呆板的一个形象。今天我就教如何大家骚起来,可以说学会今天的教程,发到朋友圈,非常的酷。今天教给大家 python3 一个程序,用来读取一个 mp4 格式的视频,并以终端的形式输出。最后呈现的效果,真的相当的骚气。我们可以先看下最后的视频效果。


前期准备

这个程序有 3 个代码文件:getIamge.py、image2txt,py、play.py,两个存放图片和文本的文件夹,以及一个 mp4 视频。在运行之前首先要确定你是否已经安装了 PIL 与 numpy 第三方库,以及 ffmpeg 插件。

640?wx_fmt=png

项目文件结构

PIL 和 numpy 可以通过 pip 来安装。而 ffmpeg 可以去官网下载(https://www.ffmpeg.org/download.html#build-windows)。打开官网对应你的系统,点击下面的图标,去下载。

640?wx_fmt=png

ffmpeg 安装


安装好 ffmpeg,在配置下环境变量:右击我的电脑-属性-高级系统设置-环境变量-Path,加上「;d:\ffmpeg\bin」(你自己的安装路径)即可。

getImage.py

所需的第三库和 ffmpeg 安装好以后,就可以开始运行 python 代码。首先运行的是 getImage.py。getImage.py 是用于从视频中提取帧图片,提取的帧图片存放于「images/」文件夹,若文件夹中已存在帧图片可不运行该程序。若要调整每帧图片数可调整变量 crop_time 累加的数值,清空已存在的图片集,修改视频路径「videoPath」、帧图片目录路径「imagePath」,再运行 getImage.py。

getImage.py 代码:

 

import os
def getImage(videoPath, imagePath):
   img_count = 1
   crop_time = 0.0
   while crop_time <= 15.0:
       os.system('ffmpeg -i %s -f image2 -ss %s -vframes 1 %s.png' % (videoPath, str(crop_time), imagePath + str(img_count)))
       img_count += 1
       print('Geting Image ' + str(img_count) + '.png' + ' from time ' + str(crop_time))
       crop_time += 0.1
   print('Image Collected')
if __name__ == '__main__':
   videoPath = 'E:/badapple/a/1.mp4'
   imagePath = 'E:/badapple/a/images/'
   getImage(videoPath, imagePath)

image2txt.py

image2txt.py 用于将图片转化为一定尺寸的字符画,从「images/」文件夹中提取图片并转化为 txt 文本存放于「txt/」文件夹。默认要求的终端尺寸为 100x50 ,若屏幕不能支持该大小,可以将参数 charWidth 修改为自定义的每行显示字符数,调整后若运行 play.py 要求终端大小为 (charWidth)x(charWidth/2) 。参数值具体多少,没有一个固定的值,可以自己多尝试下。

注意:这个文件单独运行是没有任何反应的,因为在这个文件中只是定义了 getImage 函数,并没有去调用。具体的调用是在「play.py」中。

代码:

 

from PIL import Image
import numpy
def image2txt(inputFile, outputFile):
   im = Image.open(inputFile).convert('L')
   charWidth = 100
   im = im.resize((charWidth, charWidth // 2))
   target_width, target_height = im.size
   data = numpy.array(im)[:target_height, :target_width]
   f = open(outputFile, 'w',encoding='utf-8')
   for row in data:
       for pixel in row:
           if pixel > 127:
               f.write('1')
           else:
               f.write(' ')
       f.write('\n')
   f.close()

play.py

「play.py」用于获取 txt 文本集与依次显示 txt 文本集,以达到在终端播放字符动画的效果。运行之前请修改视频目录「videoPath」、txt 文件夹目录「txt_dir_path」、images 文件夹目录「img_dir_path」。然后运行 play.py。

注意:如果你是苹果系统,那你还需要把代码中的「type」改成「cat」,window 的就不用改。即:

 

os.system('cat ' + txtPath + str(txt_count) + '.txt')

写在最后

我已经把对应的程序源码和视频文件上传到后台,你只需在后台回复「python代码」就可以获得。如果觉得这期的教程不错,欢迎点赞和转发到朋友圈。最后赶紧把代码下载下来,运行起来,录制一个视频,发朋友圈吧。

程序员也是可以骚起来的!



http://www.ppmy.cn/news/213787.html

相关文章

拼多多直播场控互动控场软件 免费 下载免费试用

拼多多直播互动神器&#xff0c;,软件自带小号&#xff0c;无需自己准备小号同时支持自备小号&#xff0c;拼多多主播。辅助工具:观看人数、真实关注、无人直播等强大功能。提供大量数据畅享。再也不用每次直播的时候花大把钱找人刷数据了。 直播间观看人数&#xff1a;观看人数…

AutoDL使用

对于学习计算机并进行深度学习训练的同学们&#xff0c;autodl这个网站的租用GPU服务器可谓是性价比超高。Autodl服务器租用网站链接&#xff1a; AutoDL-品质GPU租用平台-租GPU就上AutoDL 一、租用服务器&#xff08;创建实例&#xff09; 首先进入网站&#xff0c;注册账号…

今年,我只赚了一点点

大家好&#xff0c;我是 Jack。 之前一直有小伙伴问我&#xff0c;有没有免费的股票信息查询的 API 接口&#xff1f; 我看了一圈&#xff0c;很多免费的 API 接口都年久失修&#xff0c;失效了。 那好吧&#xff0c;咱自己写一个。 想要玩量化交易&#xff0c;第一步&…

ChatGPT 官方 API 来了,价格直接打骨折,未来……

大家好&#xff0c;我是校长。 ChatGPT 自去年年底公布以来&#xff0c;最近这几个月一直处于火热的状态当中&#xff0c;堪称引起了人工智能旋风。 01 官方 API 来了 昨天凌晨 2 点左右&#xff08;美西时间 3 月 1 日&#xff08;周三&#xff09;&#xff09;&#xff0c;Op…

手机淘汰了多少机器,你怎么看?

从1993年至今&#xff0c;差不多30年的时间里&#xff0c;手机不仅淘汰了很多机器&#xff0c;而且随着智能手机的出现&#xff0c;很多的生活用品、娱乐场所和商场柜台也都被手机淘汰了。 一、被手机淘汰的电子产品 1、彻底被淘汰的传呼机 传呼机&#xff0c;又叫做BB机、B…

10个python办公黑科技,助你办公效率提高100倍

1946年&#xff0c;世界上第一台通用计算机“ENIAC”在美国宾夕法尼亚大学诞生&#xff1b;“ENIAC”占地170平方米&#xff0c;重达30吨&#xff0c;耗电功率约150千瓦&#xff0c;每秒钟可进行5000次运算&#xff0c;这个庞然大物用于美国国防部进行弹道计算。 在当时&#…

python用爬虫实现抢票_PythonGUI+爬虫-从零打造12306抢票软件价值1680元

├── 000-课前必读.mp4 ├── 001-撩课-12306抢票软件项目-项目展示.mp4 ├── 002-撩课-12306抢票项目开篇-2019新年快乐!.mp4 ├── 003-撩课-抢票软件项目-项目需求和原型图.mp4 ├── 004-网络基础-网络-IP-域名概念.mp4 ├── 005-网络基础-客户端和服务器概念.mp4…

SpreadJS + GcExcel 一出,谁与争锋 全栈表格技术轻松应对复杂公式计算场景(一)

设计思路篇 Excel是我们日常办公中最常用的电子表格程序&#xff0c;不仅可满足报表数据的计算需求&#xff0c;还可提供绘图、数据透视分析、BI和Visual Basic for Applications (VBA)宏语言编程等多项功能。经过数年发展&#xff0c;Excel已具备所有电子表格的基本能力&…