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实现多线程采集的2个代码例子
Jul 07 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
Python设计模式之代理模式简单示例
Jan 09 Python
使用python获取csv文本的某行或某列数据的实例
Apr 03 Python
在Pandas中处理NaN值的方法
Jun 25 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python编写简单端口扫描器
Sep 04 Python
Django bulk_create()、update()与数据库事务的效率对比分析
May 15 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
Feb 16 Python
python 使用openpyxl读取excel数据
Feb 18 Python
使用tensorflow 实现反向传播求导
May 26 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 用数组降低程序的时间复杂度
2009/12/04 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP网络操作函数汇总
2015/05/18 PHP
php提高网站效率的技巧
2015/09/29 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
Mootools 1.2教程 函数
2009/09/15 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
浅谈js中的this问题
2017/08/31 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python3基础之list列表实例解析
2014/08/13 Python
python设计模式大全
2016/06/27 Python
手把手教你python实现SVM算法
2017/12/27 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
Python发送邮件实现基础解析
2020/08/14 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
入党申请自荐书范文
2014/02/11 职场文书
优良学风班申请材料
2014/02/13 职场文书
职务说明书范文
2014/05/07 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
2014年民警工作总结
2014/11/25 职场文书
同意报考公务员证明
2015/06/17 职场文书
Golang bufio详细讲解
2022/04/21 Golang