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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
用Python输出一个杨辉三角的例子
Jun 13 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
好用的Python编辑器WingIDE的使用经验总结
Aug 31 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
Python实现word2Vec model过程解析
Dec 16 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
python selenium xpath定位操作
Sep 01 Python
Python命令行参数定义及需要注意的地方
Nov 30 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
python实现批量下载新浪博客的方法
2015/06/15 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python中requests小技巧
2017/05/10 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
python使用Matplotlib画条形图
2020/03/25 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
详解Python是如何实现issubclass的
2019/07/24 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
初学者学习Python好还是Java好
2020/05/26 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
JSF的标签库有哪些
2012/04/27 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
初中班级口号
2014/06/09 职场文书
2014年精神文明工作总结
2014/12/23 职场文书