本文建议阅读时间 8 分钟
在日常调试代码时,经常需要在视频中添加一些文字说明。下面将使用 Python 的 OpenCV 和 PIL 库来实现对视频添加文字的功能。
对于视频中添加的文字,字体可以根据个人喜好选择。使用 Windows 系统的用户可以在 C:\Windows\Fonts 目录下找到更多字体,复制到程序所在目录即可使用。
Windows 中的字体
以下是实现代码,语言为 Python,运行次数为 0:
立即学习“Python免费学习笔记(深入)”;
doxygen是一款好用的程序员辅助工具,它可以让程序添加批添代码更加简单轻松,兼容C++、 C、Java、 Objective-C、Python等主流编程语言,小编提供的doxygen中文手册包含了基本介绍、语法技巧以及进阶技巧等内容,可以让你快速上手操作,有需要的欢迎下载。 基本介绍 Doxygen已经支持生成ANSI编码的chm目录文件(index.hhc)!Doxygen通常是用作生成英文文档的,生成中文文档需要修改输入和输出的码制,这样可以改变解析方式,生成中文文档。但是,你必须意识 到,Dox
import cv2 from PIL import Image, ImageDraw, ImageFont import numpy as np读取视频
cap = cv2.VideoCapture('video.avi')
定义编解码器并创建 VideoWriter 对象
fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,360)) # 设置输出视频参数
while cap.isOpened(): ret, frame = cap.read() if ret == True:
在 frame 上显示一些信息
img_PIL = Image.fromarray(frame[..., ::-1]) # 转换为 array font = ImageFont.truetype('STZHONGS.TTF', 40) # 设置字体,Windows系统可以在 "C:\Windows\Fonts" 下查找 text1 = "机器视觉CV" text2 = "目标检测DEMO" for i, te in enumerate(text1): position = (50, 20+i*50) draw = ImageDraw.Draw(img_PIL) draw.text(position, te, font=font, fill=(255,0,0)) for i, te in enumerate(text2): position = (520, 10+i*40) draw = ImageDraw.Draw(img_PIL) draw.text(position, te, font=font, fill=(255,0,0)) frame = cv2.cvtColor(np.asarray(img_PIL), cv2.COLOR_RGB2BGR) # 写入帧 cv2.imshow('frame', frame) out.write(frame) if cv2.waitKey(1) & 0xFF == ord('q'): break else: break释放所有资源
cap.release() out.release() cv2.destroyAllWindows()
实现效果如下:
视频截图
视频截图









