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的subprocess模块总结
Nov 07 Python
python实现ipsec开权限实例
Nov 11 Python
Python contextlib模块使用示例
Feb 18 Python
python获取远程图片大小和尺寸的方法
Mar 26 Python
Python导入txt数据到mysql的方法
Apr 08 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
简单了解Django模板的使用
Dec 20 Python
python argparser的具体使用
Nov 10 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 Python
Python如何获取文件路径/目录
Sep 22 Python
如何利用python读取micaps文件详解
Oct 18 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语法(1)
2006/10/09 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
php compact 通过变量创建数组
2016/11/15 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
Node 自动化部署的方法
2017/10/17 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
vue组件横向树实现代码
2018/08/02 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
python实现录音小程序
2020/10/26 Python
python 文件查找及内容匹配方法
2018/10/25 Python
python属于解释语言吗
2020/06/11 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
建房协议书
2014/04/11 职场文书
团队队名口号大全
2014/06/06 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
世界文化遗产导游词
2015/02/13 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js