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 相关文章推荐
python直接访问私有属性的简单方法
Jul 25 Python
详解python3百度指数抓取实例
Dec 12 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
Jan 18 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
Apr 19 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
Python xmltodict模块安装及代码实例
Oct 05 Python
Python Tkinter实例——模拟掷骰子
Oct 24 Python
详解python的变量缓存机制
Jan 24 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
如何开发一个虚拟域名系统
2006/10/09 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
Python fileinput模块使用实例
2015/06/03 Python
Python第三方库的安装方法总结
2016/06/06 Python
简单实现python画圆功能
2018/01/25 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
Python如何在DataFrame增加数值
2020/02/14 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
python中可以声明变量类型吗
2020/06/18 Python
美国在线工具商店:Acme Tools
2018/06/26 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
初中考试作弊检讨书
2014/02/01 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
2014年科协工作总结
2014/12/09 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
代码解析React中setState同步和异步问题
2021/06/03 Javascript
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
解决vue中provide inject的响应式监听
2022/04/19 Vue.js