python游戏开发之视频转彩色字符动画


Posted in Python onApril 26, 2019

本文实例为大家分享了python视频转彩色字符动画的具体代码,供大家参考,具体内容如下

一、效果

原图:

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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
深入讲解Python编程中的字符串
Oct 14 Python
python 打印对象的所有属性值的方法
Sep 11 Python
Python三级菜单的实例
Sep 13 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
超简单使用Python换脸实例
Mar 27 Python
Python应用领域和就业形势分析总结
May 14 Python
python批量处理txt文件的实例代码
Jan 13 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
python中round函数保留两位小数的方法
Dec 04 Python
python unittest单元测试的步骤分析
Aug 02 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 #Python
python使用参数对嵌套字典进行取值的方法
Apr 26 #Python
python将视频转换为全字符视频
Apr 26 #Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 #Python
Python3.5内置模块之random模块用法实例分析
Apr 26 #Python
python3.5安装python3-tk详解
Apr 26 #Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 #Python
You might like
php下使用无限生命期Session的方法
2007/03/16 PHP
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
php强制运行广告的方法
2014/12/01 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
IE与FireFox中的childNodes区别
2011/10/20 Javascript
js实现日期级联效果
2014/01/23 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
javaScript语法总结
2016/11/25 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Python3.5 创建文件的简单实例
2018/04/26 Python
python版本单链表实现代码
2018/09/28 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
维也纳通行证:Vienna PASS
2019/07/18 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
幼儿园保教管理制度
2014/02/03 职场文书
房屋公证委托书
2014/04/03 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
家庭贫困证明
2015/06/16 职场文书
springboot实现string转json json里面带数组
2022/06/16 Java/Android
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技