学习前言:

最近在学习OpenCv播放视频,学习完毕后,神奇的发现:其实播放视频就是把视频中的图像一帧帧的抽取出来,按照一定的时间间隔展示罢了。 既然如此,那么我能不能逆向思维——倒过来?把一帧帧图片按照一定时间间隔轮流播放变成视频呢? 抱着这样的办法, 我尝试了实验,最后发现真的可以做得到,而且OpenCv也封装了这个函数,就是使用中有非常多的坑,但是我也一一填补,以下代码函数可以即拿即用!


【方便的Opencv】实现图片合成视频+附带图片生成gif

学习前言:

实现代码:

将一个文件夹下的图片生成gif


实现代码:

'''
    fps:
    帧率:1秒钟有n张图片写进去[控制一张图片停留5秒钟,那就是帧率为1,重复播放这张图片5次] 
    如果文件夹下有50张 534*300的图片,这里设置1秒钟播放5张,那么这个视频的时长就是10秒
    '''

请确保每一张图片都是一样的大小,如果不是请手动resize至一致!

# -*- coding: UTF-8 -*-
import os
import cv2
import time# 图片合成视频
def picvideo(img_path, size):filelist = os.listdir(img_path)  # 获取该目录下的所有文件名fps = 24video_path = os.path.join('Package\\video', img_path.split('\\')[-1] + ".avi")  # 导出路径# 可以用(*'DVIX')或(*'X264'),如果都不行先装ffmepgfourcc = cv2.VideoWriter_fourcc('I','4','2','0')  # 不同视频编码对应不同视频格式(例:'I','4','2','0' 对应avi格式)video = cv2.VideoWriter(video_path, fourcc, fps, size, True)for i in range(len(filelist)):item = os.path.join(img_path, str(i)+'.png')img = cv2.imread(item)  # 使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。video.write(img)  # 把图片写进视频video.release()  # 释放print('video_path:', video_path)return video_pathdef main(img_path):img_list = os.listdir(img_path)img = cv2.imread(os.path.join(img_path, img_list[7]))w, h, _ = img.shapereturn picvideo(img_path, (h, w))  # 尺寸要调转,挖槽,坑死他爹地我了if __name__ == '__main__':main('Package\Origrial\\tds_nm_01')

将一个文件夹下的图片生成gif

'''
Author: 
Email: 
公众号:
'''
import os

import imageio
def create_gif(img_path, gif_name, duration = 1.0):
    '''
    :param image_list: 这个列表用于存放生成动图的图片
    :param gif_name: 字符串,所生成gif文件名,带.gif后缀
    :param duration: 图像间隔时间
    :return:
    '''
    frames = []
    for image_name in os.listdir(img_path):
        temp = os.path.join(img_path, image_name)
        print(temp)
        frames.append(imageio.imread(temp))

imageio.mimsave(gif_name, frames, 'GIF', duration=duration)
    return

def main():
    #这里放上自己所需要合成的图片文件夹路径
    image_path = r'C:\Users\86137\Desktop\gaitRecognition_platform\Package\Fgmask\tds_nm_03'
    gif_name = 'new.gif'
    duration = 0.08        # 播放速度yuexiaoyuekuai
    create_gif(image_path, gif_name, duration)

if __name__ == '__main__':
    main()

完毕! 

        最后说一声,Opencv的学习之路漫漫,希望我们能一起加油,共同进步!最后的最后,如果这篇文章有帮助到大家,麻烦点赞+收藏一下! 

【方便的Opencv】实现图片合成视频+附带图片生成gif相关推荐

  1. 【实操】python opencv将图片合成视频,并插入音频

    简介:将一组图片合成视频,并插入音频.用到opencv,ffmpy,pydub等库. 目录 一.统一图片大小及类型,并按数字排序 二.图片合成视频 三.音频的合并与剪裁 四.音视频融合 opencv基 ...

  2. PYthon将图片合成视频方法一:OpenCV

    PYthon将图片合成视频方法一:OpenCV 使用情景 主要知识点 代码 使用情景 做短视频编辑的时候,将图片合成为视频,是经常碰到的情况.本文将介绍使用python的OpenCV库,将图片合成为视 ...

  3. opencv python图片合成视频

    opencv python 图片合成视频 经常用到,记录一下,代码基本上都来自这里这篇博客 只是做了小小的改进,将文件的字符串排序改成了按照文件名排序,合成视频的时候不会乱. 侵删. # -*- co ...

  4. OpenCV 图片合成视频

    # -*- coding: UTF-8 -*-import os import cv2 import time import numpy as np # 图片合成视频 def picvideo(pat ...

  5. 用OpenCV将视频分解成单帧图片,图片合成视频

    本文做的是基于opencv将视频帧转成图片输出,由于一个视频包含的帧数过多,经常我们并不是需要它的全部帧转成图片,因此我们希望可以设置每隔多少帧再转一次图片(本文设置为30帧),若有人需求是只需要前多 ...

  6. Python + OpenCV 图片合成视频遇到的问题

    Python + OpenCV 图片合成视频遇到的问题 其中cv2.VideoWriter 中的四个参数: 文件名 视频编码格式 帧率 视频的宽度和高度 注意:需要合成的视频和对应图片的宽度和高度要相 ...

  7. opencv图片合成视频提高视频清晰度参数

    之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下 /** 图片合成视频 @param mp4SavePath 视频保存路径 @param imageDir 图片地址 @param rate ...

  8. python+OpenCV 图片合成视频

    ''' opencv_机器学习-图片合成视频 实现步骤: 1.加载视频 2.读取视频的Info信息 3.通过parse方法完成数据的解析拿到单帧视频 4.imshow,imwrite展示和保存 ''' ...

  9. python脚本——图片重命名、图片合成视频、faster-rcnn画P-R曲线

    调试faster rcnn算法实用的python脚本 目录 调试faster rcnn算法实用的python脚本 一.前言 二.常用python脚本 三.后记 一.前言 最近在做关于目标检测算法的研究 ...

最新文章

  1. virtualbox 在物理机是无线网卡的时候做桥接配置 - juandx - 博客园
  2. server2016安装mysql_windows server2016安装MySQL5.7.19解压缩版教程详解
  3. JDK 8中的流驱动的集合功能
  4. 「装X指南」:手把手教你包装成程序员大佬
  5. Servlet期末复习笔记
  6. 万年历黄历星座查询v3.6.9引流吸粉 实用工具 流量变现小程序
  7. 分享5个制定市场营销神器
  8. .NET ASP.NET 页生命周期概述
  9. Linux下Oracle移植数据
  10. [学习][数据结构]二叉搜索树
  11. matlab 求全波整流信号的傅里叶系数
  12. vue input手机号验证
  13. 摄像头网络直播方案LiveGBS部署问题
  14. 基于 Wio Terminal 实现的网络天气预报助理
  15. win7旗舰版出现COM Surrogate已停止工作
  16. Moglue:无需编程的交互式电子书制作软件(视频演示)
  17. python计算互信息_互信息公式及概述
  18. Android什么是匿名内部类,Android里的匿名内部类
  19. OneNote for win10 手动同步方法
  20. 同一账户在不同地方登录问题

热门文章

  1. [开源免费] ZXTouch - iOS11-14 iOS13 模拟触摸 模拟点击 比触动精灵和AutoTouch更好用的插件
  2. 中介者模式及其应用场景
  3. Win7环境下硬盘安装XP(无光驱/光盘安装XP)
  4. Debezium实战-第7章 其它-Debezium UI
  5. win10开机占用内存大,资源管理器也看不到运行进程
  6. 电流型和电压型PHY
  7. Google 出现崩溃 错误代码:STATUS_BREAKPOINT
  8. windows 7 home版转旗舰版
  9. JAVA+JDBC超级详解---从连接数据库到连接池
  10. APMServ更新PHP,APMServ升级PHP至5.3