Opencv python 图片生成视频的方法示例


Posted in Python onNovember 18, 2020

本文主要介绍了Opencv图片生成视频,分享给大家,具体如下:

Opencv python 图片生成视频的方法示例

生成视频

import random as rd
import cv2 as cv
import numpy as np


# 保存视频
class RecordMovie(object):

  def __init__(self, img_width, img_height):
    self.video_writer = None # 视频对象
    self.is_end = False # 结束保存视频
    self.img_width = img_width # 宽度
    self.img_height = img_height # 高度

  # 创建 视频写入对象
  def start(self, file_name, freq):
    # 创建视频格式
    four_cc = cv.VideoWriter_fourcc(*'mp4v')
    img_size = (self.img_width, self.img_height) # 视频尺寸

    # 创建视频写入对象
    self.video_writer = cv.VideoWriter()
    self.video_writer.open(file_name, four_cc, freq, img_size, True)

  # 写入图片帧
  def record(self, img):
    if self.is_end is False:
      self.video_writer.write(img)

  # 完成视频 释放资源
  def end(self):
    self.is_end = True
    self.video_writer.release()


def move_image(img_src):
  img_height, img_width = img_src.shape[:2]

  # 随机 xy平移方向与大小设置
  x_size = rd.randint(-3, 3)
  y_size = rd.randint(-3, 3)

  # 自定义转换矩阵
  transform_matrix = np.float32([[1, 0, x_size], [0, 1, y_size]])

  # 执行平移
  return cv.warpAffine(img_src, transform_matrix, (img_width, img_height))


def main():
  # 1.读取图片
  img_org = cv.imread("img.png", cv.IMREAD_GRAYSCALE)

  # 2.显示图片
  cv.imshow("org", img_org)
  cv.namedWindow("shift")

  # 3.视频文件生成
  height, width = img_org.shape[:2]
  print(height, width)
  rm = RecordMovie(width, height)

  # 设置视频文件名称 频率
  rm.start("test.mp4", 20)

  # 4.图片写入视频
  for i in range(300):
    # 图片微调调整
    img_move = move_image(img_org)
    img_move = cv.cvtColor(img_move, cv.COLOR_GRAY2RGB)

    rm.record(img_move)
    cv.imshow("shift", img_move)
    key = cv.waitKey(10)
    if key == 27: # esc 按键
      break

  # 5.关闭视频文件
  rm.end()


if __name__ == '__main__':
  main()

Opencv python 图片生成视频的方法示例

Opencv python 图片生成视频的方法示例

到此这篇关于Opencv python 图片生成视频的方法示例的文章就介绍到这了,更多相关Opencv图片生成视频内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python求列表交集的方法汇总
Nov 10 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
Python中元组,列表,字典的区别
May 21 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
详解python实现线程安全的单例模式
Mar 05 Python
Python将图片转换为字符画的方法
Jun 16 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
python3中编码获取网页的实例方法
Nov 16 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 Python
calendar在python3时间中常用函数举例详解
Nov 18 #Python
Python 远程开关机的方法
Nov 18 #Python
python 元组和列表的区别
Dec 30 #Python
基于Python爬取搜狐证券股票过程解析
Nov 18 #Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 #Python
Anaconda的安装与虚拟环境建立
Nov 18 #Python
如何基于Python pygame实现动画跑马灯
Nov 18 #Python
You might like
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
firefox中JS读取XML文件
2006/12/21 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
通过Python 接口使用OpenCV的方法
2018/04/02 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
python 实现屏幕录制示例
2019/12/23 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
Python面试题集
2012/03/08 面试题
行政管理人员精品工作推荐信
2013/11/04 职场文书
结婚典礼证婚词
2014/01/11 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
小学英语课后反思
2014/04/26 职场文书
小学端午节活动总结
2015/02/11 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android