乌班图 python 图片转为字符画

Python将视频转换为全字符视频(含音频) 转载请注明出处 目录 目录 简介 代码 流程图 注意事项 简介 如何简单的使用python来实现将一部视频转换为字符画视频的效果。 其实,大家都知道视频就是一帧一帧的图片构成的。 那么如今我们想要实现,将视频转换为字符视频,那么是不是可以认为只要将一部视频全部逐帧拆解成图片,然后采取和以前相同的将图片转换为字符画的算法即可。然后在将这些图片按照原先的视... 阅读详情

实验楼链接:https://www.shiyanlou.com/courses/370
实验准备:
PIL 是一个 Python 图像处理库,是本课程使用的重要工具,使用下面的命令来安装 pillow(PIL)库:
sudo pip3 install --upgrade pip
sudo pip3 install pillow
实验原理:
彩色转化生成单色怎么会有区分度呢??这里用到了灰度值的概念
灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像
另外一个概念是 RGB 色彩:RGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一
我们可以使用灰度值公式将像素的 RGB 值映射到灰度值(注意这个公式并不是一个真实的算法,而是简化的 sRGB IEC61966-2.1 公式,真实的公式更复杂一些,不过在我们的这个应用场景下并没有必要):
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b
我们可以创建一个不重复的字符列表,灰度值小(暗)的用列表开头的符号,灰度值大(亮)的用列表末尾的符号
开始实验:
安装好pillow之后,创建py文件,完整PY代码命令下载获取
wget http://labfile.oss.aliyuncs.com/courses/370/ascii.py

# -*- coding=utf-8 -*-

from PIL import Image
import argparse

#命令行输入参数处理
parser = argparse.ArgumentParser()

parser.add_argument('file')     #输入文件
parser.add_argument('-o', '--output')   #输出文件
parser.add_argument('--width', type = int, default = 80) #输出字符画宽
parser.add_argument('--height', type = int, default = 80) #输出字符画高

#获取参数
args = parser.parse_args()

IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output

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

# 将256灰度映射到70个字符上
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

    unit = (256.0 + 1)/length
    return ascii_char[int(gray/unit)]

if __name__ == '__main__':

    im = Image.open(IMG)
    im = im.resize((WIDTH,HEIGHT), Image.NEAREST)

    txt = ""

    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j,i)))
        txt += '\n'

    print(txt)

    #字符画输出到文件
    if OUTPUT:
        with open(OUTPUT,'w') as f:
            f.write(txt)
    else:
        with open("output.txt",'w') as f:
            f.write(txt)

下载一个图片
运行文件:python py文件名 图片名
然后vim output.txt
即可看到转好的画

串行通信原理及实验仿真 1. 处理器与外部设备通信的两种方式: 并行通信和串行通信 并行通信是指数据的各个位用多条数据线同时进行传输 优点:传输速度快 缺点:占用引脚资源多 串行通信是将数据分成一位一位的形式在一条传输线上逐个传输 优点:通信线路简单,占用引脚资源少 缺点:传输速度慢 2. 串行通信的通信方式: 同步通信和异步通信 同步通信:带有时钟同步信号的数据传输;发送方和接收方在同一时钟的控制下,同步传输数据。 异步通信:不同时钟同步信号的数据传输。发送方和接收方使用各自的时钟控制数据的发送和接收过程。 3. 串行通 阅读详情

相关推荐

AD服务器搭建

一、角色安装1)打开服务器管理器,添加 角色和功能;2) 点 下一步;3)点 下一步;4)点 下一步;5)点击安装;6-1)将此服务器提升为域控制器;6-2)点下一步;6)输入密码 点 下一步;7)自动生成LIXF,点击下一步;8)确认目录,点下一步;8)确认安装条件,点安装; 8)安装成功,点关闭;...

潇峰的博客 6452

Ubuntu 字符终端

进入字符终端sudo /etc/init.d/gdm stop 退出字符终端sudo /etc/init.d/gdm start 字符终端中文显示:sudo apt-get install zhconzhcon --utf8 --drv=vga zhcon web:http://zhcon.sourceforge.net/index_cn.html

jmunic的专栏 1530

【全网最新】使用 1panel面板 部署若依系统( springboot 和 vue)项目

打开前端项目的vue.config.js文件,检查devServer下的proxy代理部分,然后将下面这个端口修改为你要在打包后访问的端口,即使用nginx代理前的接口。这个端口默认是80端口,这里把其修改为不会冲突的8010端口,后台接口的地址配置为9080,不过感觉这里设置的8010和9080可能没有用,因为部署前端静态页面是,也配置了一次网页的外部接口和api的接口,后期有空了再验证。打开右侧的Maven,点击:生存期->package,然后点击运行,等待打包成功,包在如图所示的文件夹中。

老薛的专栏 1756

趣玩Linux

十几种好玩的Linux命令!

m0_50111062的博客 401

qt下使用grpc编程(2) —— 练手!自己改的一个简单小例子!1

(1)在研究了grpc官方提供的helloworld例程后,自己试着写了个小程序。 (2)编写proto文件。 proto文件用于定义服务和消息,用protobuf的语法编写,protobuf是一种通信协议,详细请百度。下面附上源码: syntax = "proto3"; option java_multiple_files = true; option java_pac

u011099079的博客 3925

信息学奥赛一本通高手训练1680:序列

题目 代码 #include<cstdio> #include<iostream> #include<cmath> #define LL long long using namespace std; const LL N = 1400000+7; const LL mod = 1e9+7; int n, t; LL pos[N], sum[N], ans[N]; struct node{ LL ll, rr; }a[N]; int main(){ p

qingfeixueyue的博客 468

Python 视频转字符画 - 进阶

昨晚我在网上看到了别人做的视频转字符动画,觉得很厉害,我于是也打算玩玩。今天中午花时间实现了这样一个小玩意。 顺便把过程记录在这里。 1.源视频:https://docs.qq.com/doc/DU3pabWFhWGpXWW5h 2.转换后: 步骤 1、将视频转化为一帧一帧的图片 2、把图片转化为字符画 3、按顺序播放字符画 一、准备 1、模块 这个程序需要用到这样几个模块: 1. opencv-python #用来读取视频和图片 2. numpy...

m0_59485658的博客 1002

ChatGPT Web转API工具:原理、部署与集成实战

在AI应用开发中,API(应用程序编程接口)是实现系统间通信和数据交换的核心技术,它通过标准化的请求响应机制,将复杂功能封装为可编程的服务。其工作原理基于HTTP协议,通过定义清晰的端点、方法和数据格式,使不同平台的应用能够高效集成AI能力。这一技术价值在于极大降低了开发门槛,促进了自动化流程和智能功能的快速落地,广泛应用于智能客服、内容生成和创意辅助等场景。本文聚焦于如何通过浏览器自动化技术,将ChatGPT的Web界面能力转化为标准API服务,其中涉及Playwright无头浏览器操作和会话Cookie

weixin_42533910的博客 1767

Ubuntu字符界面使用

在 Linux 系统下,常用的关机 / 重启命令有 shutdown、halt、reboot、poweroff,他们都可以达到关机或重启系统的目的,但每个命令的内部工作过程是不同的,下面分别介绍。文件,但不会解决模块的依赖广西,且不会关心 Ubuntu 的软件仓库内的软件,可以用于安装本地的 deb 文件,实现手动安装软件包(如网络不通或安装软件源中不存在)。普通用户和超级用户出了用户名和提示符不同,它们的权限也是不同的,超级用户对文件和目录具有全权,而普通用户的权限是有限的。

YuanWent 3889

CesiumJS【Basic】- #002 加载在线瓦片地图数据

cesiumjs 加载各类在线地图数据

AlanL的专栏 952

YOLO26升级:CVPR2026 WDAM小波方向注意力+C2PSA,频域高频引导低频暗区复原,小目标检测精度跃升!

将 WDAM 引入 YOLO 的 C2PSA 模块,核心优势在于用极低的计算开销,为模型装上了一个“结构感知”的增强器,尤其适合处理密集小目标与边缘部署场景。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 371

用程序打印字符画

编写代码时间长了,满屏幕的字符看着有些枯燥,如果能在字符中出现一幅画,应该能增加一些趣味,使屏幕看起来不那么枯燥。于是百度了一下,发现知乎上有个问题https://www.zhihu.com/question/38638731/answer/132069108,回答的有道理,但用matlab,这个目前还不大了解,于是决定用Java实现一个。1.首先提取图片的RGB值,代码参考优快云一位作者,ht...

ximen250的专栏 2643

第十二章 供水管网水力模型软件介绍

本文介绍了国内外主要供水管网建模软件及其特点,重点分析了某高建模软件V14的创新功能。国际主流软件包括开源的EPANET、商业软件InfoWorksWS、WaterGEMS和MIKEURBAN,各具特色但存在应用局限。某高V14软件实现了管网GIS与模型一体化管理,采用一G多网、一网多模、一模多案、网模合一技术路线,支持全信息模型建立和动态数据更新。其创新点包括水量分配理念革新(精确/模糊匹配、三种用水模式)和首创Web服务功能。通过并发计算、GPU加速等技术优化性能,具有较高性价比。

weixin_45258875的博客 208

ubuntu启动字符图形界面设置

ubuntu启动字符图形界面设置 字符 sudo systemctl set-default multi-user.target 图形 sudo systemctl set-default graphical.target

gwh1010的博客 477

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

linux终端字符串转字符画

概述: 将字符串(非图像)转换成字符画,效果如图: __ __ ___ ______________ _____ _____/ /_ ___ _____/ /__ / _ \/ ___/ ___/ __ \/ ___/ / ___/ __ \/ _ \/ ___/ //_/ / ...

zhengyajun_email的博客 2708

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Linux(Ubuntu)--在终端(命令行)中用字符显示图片——cacaview

让我们先看一下效果图吧 首先我们要先安装一下cacaview 命令如下: sudo apt install caca-utils 安装完成后执行: cacaview 1.jpg 回车!!!,一张字符组成的图片就显示出来了 还可以通过按g/G来调整图片的深浅,按d改变图片Dither,来达到最好的显示效果  ...

白菜先森 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Linux】- 六个超赞的字符画生成器

ASCII是一个非常吸引人的字符编码系统,在计算机,通讯设备,以及其他设备中,通过它来用代码表示字符。新生代的人可能会觉得它已经过时了,但是那些熟悉它的人会懂得ASCII是多么的独特。我们在这里为你准备了五个超赞的ASCII字符艺术生成器。 1 GlassGiant ASCII Art GlassGiant ASCII Art可以把图片转换成ASCII字符艺术-一堆胡乱堆在一起的文字,数字...

weixin_30367945的博客 2956

图片转换成字符图

图片转换成字符图

Darren的博客 1万+

Python3 & OpenCV 视频转字符动画

Python3 & OpenCV 视频转字符动画 一、实验简介 1.1. 知识点 OpenCV 编译使用 OpenCV 处理图片、视频图片转字符画原理守护线程光标定位转义编码 1.2. 效果展示 (由于是在线环境,流畅度是不及本地环境的) 播放停止后的效果,注意终端中并无残留的动画字符: 二、实验步骤 2.1. 编译安装 OpenCV

oxuzhenyi的博客 10000

图片处理成字符组成的图

  目录 一、环境配置 1.安装notepad++ 2.安装python3.7 3.安装PIL(在Python3.7叫Pillow) 3.1先更新(或重新安装)一下pip 3.2然后安装Pillow(py图像处理库,包名开头是大写注意) 4.配置notepad++运行调试环境 5.使用notepad++的一些建议 5.1由于python不认tab符所以设置成按tab间的制表符换...

欢迎来到别往的博客 6075

ubuntu操作系统由图形界面转到字符界面

    ubuntu版本的linux操作系统和一般的操作系统不同,由于它没有/etc/inittab文件所以不能通过修  改/etc/inittab的值进行图形界面与字符界面之间的相互转化。在ubuntu版本的操作系统中要由图形界 面转换到字界面可以通过下面四步实现:1. 建立文件/etc/initta: sudo touch  /etc/inittab  

张中峰的专栏 1815

Ubuntu 14.04升级到Ubuntu 16.04(桌面版和字符版)

下面记录了从Ubuntu 14.04/15.10升级到Ubuntu 16.04的步骤。 在升级系统之前,我们先更新一下系统。打开终端执行如下命令:$ sudo apt-get update $ sudo apt-get dist-upgrade上面命令会下载安装最新的内核和软件包。重启系统完成安装:$ sudo reboot 执行如下命令打开更新管理器:$ sudo update-manage

kismile 1万+

安装Linux命令aview——图片转ASCII码命令

前几天在微信上看见aview这个命令挺好玩儿的,就想在自己的CentOS虚拟机上安装一个,网上搜了一个教程,然后就开始了作死的安装:(注:大神的原文地址 -> http://blog.youkuaiyun.com/exbob/article/details/7321903) 1.通过wget命令下载aalib,安装时由于还需要安装gcc和libtool(后面两个可以直接用yum install ×××来

Ai_要坦荡荡 1万+

三种图片转字符方式效率的比较

场景 我想通过json传输图片, 那么必须把图片转为string格式. 一般都是img-&amp;amp;amp;gt;byte-&amp;amp;amp;gt;string-&amp;amp;amp;gt;byte-&amp;amp;amp;gt;img的流程 三种方式的实现与比较 import base64 from time import time img_input = open(&amp;amp;quot;input.jpeg&amp;amp;qu

tianluo6010的博客 1121

Ubuntu字符界面简单使用

1、清屏命令: clear reset 2、超级用户和普通用户切换: 进入超级用户:sudo su 进入普通用户:su 用户名 3、运行级别切换: 查看:runlevel 切换: init 0 关机 init 1 单用户模式 init 2 多用户,没有NFS不联网 init 3 切换到字符界面 init 4 没有用到 init 5 切换到桌面系统 init 6 重启 输入用户名及密码即可进入字符界面(密码不显示,直接输入回车即可)(注意:如果...

m0_62404144的博客 1988

Python Matplotlib中坐标轴标题中各种特殊符号的显示 转义字符全集,编写数学表达式

Matplotlib中文显示问题——用例子说明问题 #-*- coding: utf-8 -*- from pylab import * t = arange(-4*pi, 4*pi, 0.01) y = sin(t)/t plt.plot(t, y) plt.title('test') plt.xlabel(u'\u2103',fontproperties='SimHei') #...

lqv587ss的博客 4万+
上一篇: 乌班图 python实战项目:《釜山行》人物关系可视化
下一篇: 2020.03.10
SCARLETT_one
博客等级 码龄8年 4粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值