视频转换字符画视频

目录

文本信息

项目所用主要库

视频转换的原理

完整代码

代码中值得注意的事项

不足之处

视频压缩


 

文本信息

       视频有一帧一帧的画面构成,利用字符替代画面中的像素信息,就可以将视频转换为字符画的视频,本文将利用python库,对一段视频进行转换,将其转换为字符串展示的视频,本文在文章——Python将视频转换为全字符视频(含音频)的参考下完成。以下代码及原视频可以在我的github上找到

项目所用主要库

opencv ——参考文档

pillow——参考文档

re

视频转换的原理

        将视频转换为字符画,原理是利用像素点信息将其映射到字符上,对于彩色视频,需要对其进行处理,将其转换为灰度视频,其转换原理为利用灰度值公式将彩色的RGB像素表示为灰度值。最后再利用ascii码,将灰度值映射为字符。

灰度转换公式

gray = 0.2126 * r + 0.7152 * g + 0.0722 * b

ascii码的列表

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

完整代码

import cv2
import time
import os
from PIL import Image,ImageFont,ImageDraw
from cv2 import VideoWriter,VideoWriter_fourcc,imread,resize
import re

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

    # 像素映射到字符
    def pixelToChar(self, luminance):
        return self.ascii_char[int(luminance / 256 * len(self.ascii_char))]

    # 将普通帧转为 ASCII 字符帧
    def convert(self, img, limitSize=(),fill=False,wrap=False):
        if limitSize != () and (img.shape[0] > limitSize[1] or img.shape[1] > limitSize[0]):
            #对图像缩放到适合终端的大小
            img = cv2.resize(img, limitSize, interpolation=cv2.INTER_NEAREST)
        ascii_frame = ''
        blan
  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值