iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现视频转换为字符画详解
  • 190
分享到

Python实现视频转换为字符画详解

2024-04-02 19:04:59 190人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

上次写了个华强买瓜字符视频的帖子,下面有人问如何保存,所以这次就写一个能将字符画视频保存下来的帖子,然而时不待我,华强纪元已经结束,现在是穿山甲的时代了。 首先读取视频,并转为字符。

上次写了个华强买瓜字符视频的帖子,下面有人问如何保存,所以这次就写一个能将字符画视频保存下来的帖子,然而时不待我,华强纪元已经结束,现在是穿山甲的时代了。

首先读取视频,并转为字符。视频是从B站下载的,地址《激战江南》穿山甲名场面。

由于B站直接下载的视频为flv格式,而imageio并不支持,尽管可以用OpenCV来读取,但相比之下,用ffmepg转个码也不复杂,这样可以最大限度地利用华强买瓜的代码。

另外,视频素材过长不适合代码演示,所以从第2:10进行截取15s。

在命令行中输入


>pip install FFmpeg
>ffmpeg  -i soup.flv -ss 00:02:10 -t 15 seg.mp4 -y

很快就得到了seg.mp4,接下来就是读取视频并转为字符,有关这部分代码的解析,可出门左转华强买瓜。


import imageio
import numpy as np
import matplotlib.pyplot as plt
video = imageio.get_reader('seg.mp4')
imgs = [np.mean(im,2) for im in video]
plt.imshow(imgs[30])
plt.show()

这个视频对于字符画而言太大了,所以转字符画之前需对其压缩。这里采取最简单的方法——即对相邻的像素取平均值。


#将图像宽度缩小至width
from itertools import product   #用于循环嵌套
def resizeImg(img,w,h=None):
    m,n = img.shape
    if n<w:
        return img
    if not h:
        h = int(m*w/n)
    im = np.zeros([h,w])
    rw,rh = n/w,m/h         #缩放比例
    dw,dh = int(rw),int(rh) #取均值的步长
    for i,j in product(range(h),range(w)):
        I,J = int(i*rh),int(j*rw)
        im[i,j] = np.mean(img[I:I+dh,J:J+dw])
    return im
# 测试一下

im = resizeImg(imgs[30],160)
plt.imshow(im)
plt.show()

接下来生成字符画,在此使用matplotlib中的text来进行绘制,出于观感考虑,取消了坐标轴。考虑到字符画需要宽度一致,故启用本地字体。

关于绘图字体,可参考python画图时调用本地字体


pixels = "B8&WMZO0QJX@%&jfoavunxr#t/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ^`'. " #用于映射的字符

def im2txt(img):
    im = np.floor(img/255*len(pixels)).astype(int)
    txts = ""
    for line in im:
        txts += "".join([pixels[i] for i in line])
        txts += '\r\n'    #像素换行时文本也要换行
    return txts

#测试
txt = im2txt(im)

plt.figure(figsize=(8,4.5))
plt.rcParams['font.sans-serif'] = 'SIMSUN'  #SIMSUN为宋体
plt.axis([0,10,0,10])
_ = plt.text(5, 5, txt, fontsize=6, linespacing=0.6,ha='center', va='center',wrap=True)
plt.GCa().set_axis_off()
plt.show()

结果如下

接下来就是动起来,对于老粉来说这个显然很简单,属于PythonArt这个系列的传统艺能了。。。


from matplotlib import animation
fig = plt.figure(figsize=(8,4.5))
plt.rcParams['font.sans-serif'] = 'SIMSUN'
ax = fig.add_subplot(xlim=(0,10),ylim=(0,10))
ax.set_axis_off()

text = ax.text(5, 5, txt, fontsize=6, linespacing=0.6,  ha='center', va='center',wrap=True)

def animate(im):
    text.set_text(im2txt(im))
    return [text]

imgs = [resizeImg(im,160) for im in imgs]

ani = animation.FuncAnimation(fig, animate, imgs[:200], interval=10, blit=True)

plt.show()

最终得到

到此这篇关于Python实现视频转换为字符画详解的文章就介绍到这了,更多相关Python视频转字符画内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现视频转换为字符画详解

本文链接: https://www.lsjlt.com/news/159847.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现视频转换为字符画详解
    上次写了个华强买瓜字符视频的帖子,下面有人问如何保存,所以这次就写一个能将字符画视频保存下来的帖子,然而时不待我,华强纪元已经结束,现在是穿山甲的时代了。 首先读取视频,并转为字符。...
    99+
    2022-11-12
  • Python如何实现视频转换为字符画
    这篇文章给大家分享的是有关Python如何实现视频转换为字符画的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先读取视频,并转为字符。视频是从B站下载的,地址《激战江南》穿山甲名场面。由于B站直接下载的视频为fl...
    99+
    2023-06-22
  • Python实现将图片转换为ASCII字符画
    目录前言字符画图片生成字符画文字的生成前言 要将图片转换为字符图其实很简单,我们首先将图片转换为灰度图像,这样图片的每个像素点的颜色值都是0到255,然后我们选用一些在文字矩形框内占...
    99+
    2022-11-11
  • 基于Python实现视频转字符画动漫小工具
    目录导语正文一、准备中二、原理简介三、代码演示四、效果展示导语 ​哈喽!boys and  girls 我是每天疯狂赶代码的木木子~ 今天带大家来点儿好玩儿的东西,我想你们肯定是喜欢...
    99+
    2022-11-12
  • 通过Python将MP4视频转换为GIF动画
    目录运行环境如何从 MP4 视频中提取帧将帧变成 GIF创建 MP4 到 GIF GUIPython 可用于读取常见的 MP4 视频格式并将其转换为 GIF动画。当然,如果你愿意,你...
    99+
    2022-11-12
  • 基于Python如何实现视频转字符画动漫小工具
    本篇文章给大家分享的是有关基于Python如何实现视频转字符画动漫小工具,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。导语今天带大家来点儿好玩儿的东西,我想你们肯定是喜欢的!上...
    99+
    2023-06-22
  • 如何通过Python将MP4视频转换为GIF动画
    这篇文章将为大家详细讲解有关如何通过Python将MP4视频转换为GIF动画,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。运行环境你需要安装 OpenCV 绑定以读取 MP4 文件并将视频中的每一帧转换为...
    99+
    2023-06-22
  • Python实现将图像转换为ASCII字符图
    目录1. 引言2. ASCII字符映射表3. 计算单个像素亮度4. 将像素转换为ASCII字符5. 转换图像6. 结果输出7. 主函数调用8. 效果展示9. 总结1. 引言 使用Py...
    99+
    2022-11-11
  • 如何在Python中将字符串转换为数组详解
    使用 str.split() 方法将字符串转换为数组,例如 array = string.split(',')。 str.split() 方法将在每次出现提供的分隔符...
    99+
    2022-12-20
    python字符串转换成数组 python中将字符串转化为数组 python字符数组转成整数数组
  • 使用python怎么将一张图片转换为字符画
    这期内容当中小编将会给大家带来有关使用python怎么将一张图片转换为字符画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。源码(注释很详细):# -*- coding=utf-8&nb...
    99+
    2023-06-06
  • 通过python绘制华强买瓜的字符画视频的步骤详解
    已经11月了,不知道还有没有人看华强买瓜。。。要把华强卖瓜做成字符视频,总共分为三步 读取视频 把每一帧转为字符画 把字符画表现出来  读取视频...
    99+
    2022-11-12
  • 基于Python实现视频分辨率转换
    目录前言环境依赖代码验证一下前言 本文提供将视频调整分辨率的Python代码,一如既往的实用主义。 环境依赖 ffmpeg环境安装,可以参考文章:windows ffmpeg安装部署...
    99+
    2022-11-12
  • python实现字符串转换整数
    实现一个函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如...
    99+
    2023-01-30
    整数 字符串 python
  • 利用Python 实现图片转字符画
    目录前言字符画的原理灰度值和RGB代码实战总结前言 相信大家在网上经常看到有人秀出各种各样的字符画,对于这个五彩斑斓的世界来说,我们日常看到的都是一些高清的彩色的图片,偶尔来个粗糙的...
    99+
    2022-11-11
  • Python生成字符视频的实现示例
    一、前言 在之前也写过生成字符视频的文章,但是使用的是命令行窗口输出,效果不是很好,而且存在卡顿的情况。于是我打算直接生成一个mp4的字符视频。大致思路和之前一样:Python20行代码实现视频字符化。 下面来看一个...
    99+
    2022-06-02
    Python生成字符视频 Python 字符视频
  • Python实现图片和视频的相互转换
    目录使用背景一、视频转图像二、图像转视频使用背景 有时候我们需要把很多的图片合成视频,或者说自己写一个脚本去加快或者放慢视频; 也有时候需要把视频裁剪成图片,进行后续操作。 这里提供...
    99+
    2022-11-12
  • 如何将Python字符串转换为JSON的实现方法
    目录什么是 JSON 在哪里使用JSON 基本的 JSON 语法 如何在 Python 中处理 JSON 数据 包含 JSON 模块 使用 json.loads() 函数 总结 在本...
    99+
    2022-11-12
  • 详解python 字符串和日期之间转换 StringAndDate
    python 字符串和日期之间转换 StringAndDate 这里给出实现代码,直接可以使用。大家可以看下。 实例代码: ''''' Created on 2013-7-25 ...
    99+
    2022-06-04
    字符串 详解 日期
  • 基于Python如何实现视频分辨率转换
    这篇文章主要为大家展示了“基于Python如何实现视频分辨率转换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于Python如何实现视频分辨率转换”这篇文章吧。环境依赖ffmpeg环境安装,可...
    99+
    2023-06-22
  • Python 如何实现批量转换视频音频的采样率
    目录前言环境依赖代码验证一下前言 本文主要分享一个python代码,可以将多个视频中的音频转化为相同采样率的视频。对视频格式的校验没有做,也不是很关键。 环境依赖 ffmpeg环境安...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作