Python 视频转字符画 - 进阶

本文记录了使用Python和OpenCV实现视频转字符动画的过程,包括按帧读取视频、图像转字符画、播放字符视频及优化。通过调整代码,可以实现字符视频与音乐同步播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨晚我在网上看到了别人做的视频转字符动画,觉得很厉害,我于是也打算玩玩。今天中午花时间实现了这样一个小玩意。
顺便把过程记录在这里。

        1.源视频:https://docs.qq.com/doc/DU3pabWFhWGpXWW5h

        2.转换后:

步骤

1、将视频转化为一帧一帧的图片

 2、把图片转化为字符画

 3、按顺序播放字符画

一、准备

1、模块

这个程序需要用到这样几个模块:

1. opencv-python #用来读取视频和图片
2. numpy # opencv-python依赖于它

准备阶段,首先安装依赖: .

pip3 install numpy opencv-python

然后新建python代码文档,在开头添加上下面的导入语句

#-*- coding:utf-8 -*-

# numpy 是一个矩阵运算库,图像处理需要用到。
import numpy as np

 2、材料

材料就是需要转换的视频文件了,下载下来和代码放到同一目录下,你也可以换成自己的,建议是学习时尽量选个短一点的视频,几十秒就行了,不然调试起来很痛苦。(或者自己稍微修改一下函数,只转换一定范围、一定数量的帧。)此外,要选择对比度高的视频。否则的话,就需要彩色字符才能有足够好的表现,有时间我试试。

二、按帧读取视频

现在继续添加代码,实现第一步:按帧读取视频。
下面这个函数,接受视频路径和字符视频的尺寸信息,返回一个img列表,其中的img是尺寸都为指定大小的灰度图。

#导入 opencv
import cv2

def video2imgs(video_name, size):
    """

    :param video_name: 字符串, 视频文件的路径
    :param size: 二元组,(宽, 高),用于指定生成的字符画的尺寸
    :return: 一个 img 对象的列表,img对象实际上就是 numpy.ndarray 数组
    """

    img_list = []

    # 从指定文件创建一个VideoCapture对象
    cap = cv2.VideoCapture(video_name)

    # 如果cap对象已经初始化完成了,就返回true,换句话说这是一个 while true 循环
    while cap.isOpened():
        # cap.read() 返回值介绍:
        #   ret 表示是否读取到图像
        #   frame 为图像矩阵,类型为 numpy.ndarry.
        ret, frame = cap.read()
        if ret:
            # 转换成灰度图,也可不做这一步,转换成彩色字符视频。
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

            # resize 图片,保证图片转换成字符画后,能完整地在命令行中显示。
            img = cv2.resize(gray, size, interpolation=cv2.INTER_AREA)

            # 分帧
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值