python游戏开发之视频转彩色字符动画
作者:狡猾的皮球 发布时间:2022-05-18 21:11:23
标签:python,视频,字符动画
本文实例为大家分享了python视频转彩色字符动画的具体代码,供大家参考,具体内容如下
一、效果
原图:
转换后:
效果可通过代码开头几行的参数调节
二、代码
开头几行代码,自己看着调整,把效果调到最佳就ok。
依赖库:
pip install opencv-python
pip install pygame
代码:
import pygame
import cv2
FONT_SIZE = 18 # 字体大小,可自行调整
WIN_SIZE = (1440, 1000) # 窗口大小,可自行调整
VIDEO_SIZE = (30, 30) # 视频大小,可自行调整
VIDEO_PATH = './cat.gif' # 视频文件(可以为常见的视频格式和gif)
STR_TEXT = '假装失智' # 替换字符,可自定义,没有长度限制,但至少得有一个
def video2imgs(video_name, size):
img_list = []
cap = cv2.VideoCapture(video_name)
while cap.isOpened():
ret, frame = cap.read()
if ret:
img = cv2.resize(frame, size, interpolation=cv2.INTER_AREA)
img_list.append(img)
else:
break
cap.release()
return img_list
# 初始化pygame
def main():
pygame.init()
winSur = pygame.display.set_mode(WIN_SIZE)
imgs = video2imgs(VIDEO_PATH, VIDEO_SIZE)
btnFont = pygame.font.SysFont("fangsong", FONT_SIZE)
btnFont.set_bold(True)
# 生成surface
sur_list = []
for img in imgs:
height, width, color = img.shape
surface = pygame.Surface(WIN_SIZE)
a = 0
x, y = 0, 0
for row in range(height):
x = 0
for col in range(width):
# 获取当前像素RGB
rgb = img[row][col]
rgb[0], rgb[2] = rgb[2], rgb[0]
text_texture = btnFont.render(STR_TEXT[a], True, rgb)
a = a + 1
a = a % len(STR_TEXT)
surface.blit(text_texture, (x, y))
x = x + FONT_SIZE
y = y + FONT_SIZE
sur_list.append(surface)
# 游戏主循环
current_frame = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
pygame.time.delay(int(1000 / 24))
winSur.fill((0, 0, 0))
winSur.blit(sur_list[current_frame], [0, 0])
current_frame += 1
current_frame %= len(sur_list)
# 刷新界面
pygame.display.flip()
if __name__ == '__main__':
main()
来源:https://blog.csdn.net/qq_39687901/article/details/83347915


猜你喜欢
- 使用access数据库时可能用到的数据转换:类型转换涵数:函数 返回类型 expression 参数范围CBool Boolean 任何有效
- 之前遇到过MySQL本地可以连接但是远程连不上的问题,没有记录,今天在云上新申请的服务器上又遇到这个问题,记录一下解决过程。1.排除网络或防
- 一、字符串的本质1.字符串的定义golang中的字符(character)串指的是所有8比特位字节字符串的集合,通常(非必须)是UTF-8&
- 环境系统 : win 10 显卡:gtx965m cpu :i7-6700HQ python 3.61 pytorch 0.3包引用impo
- 本文以Python开发为例来进行说明,环境说明:(1) Python 3.x(我用的版本是 3.9 版本)(2)IDE开具 PyCharm(
- 一、绘制成品二、绘制代码实现本文效果的整体思路是:加载库—选择背景音乐—绘制心的外轮廓&md
- 我们可以很轻松的从1到9或者从9到1正着背一遍,反着背一遍。但是想要在编程实现这些看起来简单的操作,就没那么容易了。因为计算机需要一些指令,
- sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(l
- 操作系统:Windows10 64bitPython版本:3.8.0下载地址:https://www.python.org/download
- keras中卷积层Conv2D的学习关于卷积的具体操作不细讲,本文只是自己太懒了不想记手写笔记。由于自己接触到的都是图像处理相关的工作,因此
- append()方法追加传递obj到现有的列表。语法以下是append()方法的语法:list.append(obj)参数&nb
- 前言场景,顾名思义,就是一个情景,一种场面。在yii2中也有场景,这个场景跟你所理解的场景含义差不多。和用户有交互的系统必不可少的功能包括收
- 理论傅立叶变换用于分析各种滤波器的频率特性,对于图像,2D离散傅里叶变换(DFT)用于找到频域.快速傅里叶变换(FFT)的快速算法用于计算D
- --创建链接服务器 exec sp_addlinkedserver &
- CSV 是一种简单的数据格式,通常为电子表格软件所使用。 它主要是由一系列的表格行组成,每行中单元格之间使用逗号(CSV 是 逗号分隔数值(
- 首先,建一个文件夹,把你要隐藏的文件放在里面,你的所有黑客程序什么的。假设你建的文件夹叫hacker然后呢,我们给这个文件夹加个扩展名(后缀
- 可以用作一些资源的释放。1.在一个函数内的defer执行顺序是先写的后执行,后写的先执行(遵循栈结构)func DeferTest1(){
- 问题描述我在用Keras的Embedding层做nlp相关的实现时,发现了一个神奇的问题,先上代码:a = Input(shape=[15]
- 前言:发现这篇文章写的有点多,我总结一下整体思路:首先这个功能市面上挺多的,我是参考了几家公司的功能实现,发现他们的整体功能实现和下面我的截
- 使用命令行时,如果要添加选项的话,python 2.3里新增加了一个模块叫optparse,也是专门来处理命令行选项的。from optpa