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中执行shell命令的几个方法小结
Sep 18 Python
Python进行数据提取的方法总结
Aug 22 Python
Python编程实现使用线性回归预测数据
Dec 07 Python
python匹配两个短语之间的字符实例
Dec 25 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
python如何将两个txt文件内容合并
Oct 18 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Python多线程的退出控制实现
Aug 10 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
Django操作cookie的实现
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数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
php Session无效分析资料整理
2016/11/29 PHP
phpwind放自动注册方法
2006/12/02 Javascript
JS的反射问题
2010/04/07 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
优秀应届毕业生自荐信
2013/11/16 职场文书
旅游文化节策划方案
2014/06/06 职场文书
电大奖学金获奖感言
2014/08/14 职场文书
公务员政审材料
2014/12/23 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
关于EntityWrapper的in用法
2022/03/22 Java/Android