使用Python生成跑马灯视频的完整代码
安装依赖库 首先,我们需要安装opencv-python和Pillow两个库。您可以使用以下命令来安装它们:
pip install opencv-python Pillow
接下来,我们来编写一个简单的Python脚本,它可以根据您提供的文本内容生成一个跑马灯视频。下面是完整的代码:
完整代码
from PIL import Image, ImageDraw, ImageFont import cv2 import numpy as np from threading import Thread def generate_video(text): # 视频分辨率 width = 1920 height = 1080 # 背景颜色和字体颜色 background_color = (255,0, 0, 255) # 红色背景 text_color = (255, 255, 255) # 白色字体 # 字体大小和类型 font_size = int(height * 0.60) font = ImageFont.truetype('msyh.ttc', font_size) # 计算文本大小 text_size = font.getsize(text) # 计算视频长度 video_length = int((width + text_size[0]) / 20) # 创建视频写入器 fourcc = cv2.VideoWriter_fourcc(*'mp4v') video_writer = cv2.VideoWriter(r'E:\Template\word\marquee.mp4', fourcc, 60, (width, height)) def update_progress(progress): print('\r[{}{}] {:.2f}%'.format('#' * int(progress * 10), ' ' * (10 - int(progress * 10)), progress * 100), end='') def export_video(): for i in range(video_length): # 创建背景图像 img = Image.new('RGB', (width, height), background_color) # 添加文本 draw = ImageDraw.Draw(img) x = width - i * 20 y = int(height / 2 - text_size[1] / 2) draw.text((x, y), text, fill=text_color, font=font) # 写入视频帧 video_writer.write(cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)) # 更新进度条 update_progress(i / video_length) # 关闭视频写入器 video_writer.release() print('\n视频导出完成!') # 使用多线程优化视频导出速度 export_thread = Thread(target=export_video) export_thread.start() generate_video('这里是您要显示的文本')
效果图
在上面的代码中,我们首先定义了一些参数,包括视频分辨率、背景颜色、字体颜色、字体大小和类型等。然后,我们使用Pillow库中的ImageFont类来加载字体文件,并计算文本的大小。接着,我们根据文本大小计算出视频的长度。
然后,我们创建一个OpenCV的VideoWriter对象,用于将图像帧写入视频文件。在导出视频的过程中,我们使用Pillow库中的Image类创建一个纯色背景图像,并使用ImageDraw类在图像上绘制文本。最后,我们将图像转换为NumPy数组,并使用OpenCV将其写入视频文件。
为了优化视频导出速度,我们使用了多线程技术。在导出过程中,我们还实时更新了一个进度条,以便用户了解导出进度。
运行脚本 在运行上面的脚本之前,您需要确保您的计算机上安装了微软雅黑字体(msyh.ttc)。如果您使用的是其他字体文件,您需要将代码中的
font = ImageFont.truetype('msyh.ttc', font_size)
这一行中的msyh.ttc替换为您使用的字体文件的路径。
运行此脚本后,它将在E:\Template\word目录下生成一个名为marquee.mp4的视频文件。导出过程中,它会在控制台中输出进度条。
以上就是使用Python生成跑马灯视频的完整代码的详细内容,更多关于Python跑马灯视频的资料请关注脚本之家其它相关文章!
相关文章
pyqt QGraphicsView 以鼠标为中心进行缩放功能实现
在PyQt开发中,实现QGraphicsView的鼠标中心缩放功能需要注意初始化以及关键函数的重定义,遇到不达预期的效果时,可能需要重写所有鼠标事件,本文记录了解决QGraphicsView鼠标缩放问题的过程,供开发者参考2024-10-10Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
这篇文章主要介绍了Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法,涉及Python针对列表与字典的元素遍历、判断、去重、排序等相关操作技巧,需要的朋友可以参考下2018-03-03pyinstaller打包可执行文件出现KeyError的问题
这篇文章主要介绍了pyinstaller打包可执行文件出现KeyError的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-11-11
最新评论