系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、python视频拆分+图片合成(源码一)
    • 1.python视频拆分
    • 1.python图片合成
  • 二、python视频拆分+图片合成(源码二)
  • 三、python视频拆分(源码三)
  • 总结

前言

一、python视频拆分+图片合成(源码一)

1.python视频拆分

import cv2def video2frame(videos_path,frames_save_path,time_interval):''':param videos_path: 视频的存放路径:param frames_save_path: 视频切分成帧之后图片的保存路径:param time_interval: 保存间隔:return:'''vidcap = cv2.VideoCapture(videos_path)success, image = vidcap.read()count = 0while success:success, image = vidcap.read()count += 1if count % time_interval == 0:cv2.imencode('.jpg', image)[1].tofile(frames_save_path + "/frame%d.jpg" % count)# if count == 20:#   breakprint(count)if __name__ == '__main__':videos_path = r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen\1.mp4'frames_save_path = r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen'time_interval = 2#隔一帧保存一次video2frame(videos_path, frames_save_path, time_interval)

1.python图片合成

import cv2
import os
import numpy as np
from PIL import Imagedef frame2video(im_dir,video_dir,fps):im_list = os.listdir(im_dir)im_list.sort(key=lambda x: int(x.replace("frame","").split('.')[0]))  #最好再看看图片顺序对不img = Image.open(os.path.join(im_dir,im_list[0]))img_size = img.size #获得图片分辨率,im_dir文件夹下的图片分辨率需要一致# fourcc = cv2.cv.CV_FOURCC('M','J','P','G') #opencv版本是2fourcc = cv2.VideoWriter_fourcc(*'XVID') #opencv版本是3videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)# count = 1for i in im_list:im_name = os.path.join(im_dir+i)frame = cv2.imdecode(np.fromfile(im_name, dtype=np.uint8), -1)videoWriter.write(frame)# count+=1# if (count == 200):#     print(im_name)#     breakvideoWriter.release()print('finish')if __name__ == '__main__':im_dir = r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen\pho/'#帧存放路径video_dir = r'E:\py\python3.7\test\test98youhuashiping\shipingchaifen/test.mp4' #合成视频存放的路径fps = 30 #帧率,每秒钟帧数越多,所显示的动作就会越流畅frame2video(im_dir, video_dir, fps)

提示:路径中不要出现中文和特殊字符,且书写要规范!!

二、python视频拆分+图片合成(源码二)

import cv2
import numpy as np
import os
os.chdir(r'E:\py\python3.7\test\test98youhuashiping\chaifen')##读取视频,并逐帧分解成图片
cap = cv2.VideoCapture('1.mp4')  #打开一个视频
isOpened = cap.isOpened() #判断是否打开
print(isOpened)#获取视频的相关信息,视频的每一帧图片的宽度都是一致的
fps = cap.get(cv2.CAP_PROP_FPS) #帧率,即每秒钟由多少张图片组成
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取宽度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取高度
print(fps,width,height)  #输出相关信息i = 0
while (isOpened):#读取视频的前两秒的图像,共计2*int(fps)张if i ==int(fps)*2 :  breakelse:i = i+1(flag,frame) = cap.read() #读取每一张 flag framefilename = 'image'+str(i)+'.jpg'#将读取的图片写入文件中,if flag == True:cv2.imwrite(filename,frame,[cv2.IMWRITE_JPEG_QUALITY,100])  #确定图片质量,100算是高的
print('end!')   ##读取零散图片(上面分解的图片),并将其合成视频
img = cv2.imread('image1.jpg')
imginfo = img.shape
size = (imginfo[1],imginfo[0])  #与默认不同,opencv使用 height在前,width在后,所有需要自己重新排序
print(size)#创建写入对象,包括 新建视频名称,每秒钟多少帧图片(10张) ,size大小
#一般人眼最低分辨率为19帧/秒
videoWrite = cv2.VideoWriter('2.mp4',-1,10,size) for i in range(1,40):filename = 'image'+str(i)+'.jpg'img = cv2.imread(filename,1)  #1 表示彩图,0表示灰度图  #直接写入图片对应的数据videoWrite.write(img)  videoWrite.release() #关闭写入对象
print('end')

三、python视频拆分(源码三)

import cv2 #导入opencv模块
import os
import timedef video_split(video_path,save_path):'''对视频文件切割成帧''''''@param video_path:视频路径@param save_path:保存切分后帧的路径'''vc=cv2.VideoCapture(video_path)#一帧一帧的分割 需要几帧写几c=0if vc.isOpened():rval,frame=vc.read()else:rval=Falsewhile rval:rval,frame=vc.read()# 每秒提取2帧图片if c % 2 == 0:cv2.imwrite(save_path + "/" + str('%06d'%c)+'.jpg',frame)cv2.waitKey(1)c=c+1DATA_DIR = r"E:\py\python3.7\test\test98youhuashiping\ceshi\mp4" #视频数据主目录SAVE_DIR = r"E:\py\python3.7\test\test98youhuashiping\ceshi\pho2" #帧文件保存目录start_time = time.time()
for parents,dirs,filenames in os.walk(DATA_DIR):#if parents == DATA_DIR:# continueprint("正在处理文件夹",parents)path = parents.replace("\\","//")f = parents.split("\\")[1]save_path = SAVE_DIR + "//" + f# 对每视频数据进行遍历for file in filenames:file_name = file.split(".")[0]save_path_ = save_path + "/" + file_nameif not os.path.isdir(save_path_):os.makedirs(save_path_)video_path = path + "/" + filevideo_split(video_path,save_path_)end_time = time.time()
print("Cost time",start_time - end_time)

总结

分享:
一个有能力的人,就是逢山开路,遇水架桥,实在过不去就绕个弯,也要前进,这就是能力。决心就是力量,坦诚就是效率。平坦不是最佳道路,起伏才有丰富人生。一个人可以不成功,但不可以不成长,成长比成功更重要。凡事找方法去解决者,一定是成功者,凡事找借口推脱者,必定失败。

python将视频分解为图片+将图片合成为视频相关推荐

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

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

  2. python提取视频、音频音轨,并合成到视频中

    需要安装moviepy from moviepy import * from moviepy.editor import * import globvideo_dirs = glob.glob('re ...

  3. python多线程爬取ts文件并合成mp4视频

    python多线程爬取ts文件并合成mp4视频 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造成损失,和本博客无关 目录 python多线程爬取ts文件并合成mp4视频 前言 一.分析页面 ...

  4. python自动下载安装软件_python3自动下载优酷视频小程序

    我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们.尽管chrome和firefox的一些插件可以下载,但有 ...

  5. 计算机音频 视频教程,如何给视频配音 电脑录音再合成到视频[图文教程]

    有的人喜欢直播解说视频,有的人则喜欢先把视频录制好,然后在电脑录音再合成到视频,直播视频就不说了,下载个YY就可以了,后者录制视频在合成录音其实就是算是给视频配音的方法了,如何给视频配音?网上有很多软 ...

  6. python视频操作——python实现将视频分解为图片序列

    python将视频分解为图片序列 内容参考自博客~ 详细实现代码如下: import cv2# 读取视频,方法是来自cv2库的VideoCapture cap = cv2.VideoCapture(& ...

  7. 用python把视频分解成图片

    # 用python把视频分解成图片 import cv2 # 读取一段视频 cap=cv2.VideoCapture("d:/1.mp4") # 用作计数 i=0 # 循环判断视频 ...

  8. 视频分解图片原理;图片合成视频原理

    (1)加载视频 (2)读取视频信息 (3)解码视频,拿到单帧信息 帧率:视频每秒钟展示多少张图片:帧率高我们看到的图片才是连续的:帧率低我们看到的图片就相当于非连续的: 宽度:高度 接下来是视频保存成 ...

  9. python ffmpeg 视频转图片 视频转音频 播放音频 多张图片+音频转视频 多个视频合成一个视频 改变视频播放速度

    文章目录 视频转图片 视频转音频 播放音频 图片+音频 转 视频 多个视频合成一个视频 改变视频播放速度 视频转图片 #!/usr/bin/env python # -*- encoding: utf ...

最新文章

  1. 烂泥:mysql5.5数据库cmake源码编译安装
  2. JAVA NIO之Direct Buffer 与 Heap Buffer的区别?
  3. 数据分析与挖掘 - R语言:贝叶斯分类算法(案例三)
  4. 消防荷载楼板按弹性还是塑性计算_现浇楼板裂缝处理办法全总结!
  5. 变频器端子阻抗3k_PLC与变频器连接问题分析
  6. String、StringBuilder类连接字符串操作的时间差异
  7. cad画1000线太长了_为什么你画CAD图没别人快?今天就教你几招!
  8. mysql limit括号_采坑笔记——mysql的order by和limit排序问题
  9. 花花酱leetcode 题目——搜索专题
  10. 【POJ - 2553】The Bottom of a Graph(tarjan强连通分量缩点,模板题)
  11. 计算机系统结构实验报告Linux,计算机操作系统体系结构实验报告.doc
  12. 【英语学习】【WOTD】thole 释义/词源/示例
  13. javaweb功能模块如何合理设计_燃油燃气锅炉烟道如何设计才更合理?
  14. setuptools find_packages
  15. 安装Flutter环境
  16. VB 各种进制相互转换大全
  17. 剑指offer面试题18. 删除链表的节点(双指针)(链表)
  18. 算法竞赛入门经典 1 实验
  19. jsp中java代码注释_JSP页面中的三种代码注释方法
  20. 富文本点击事件-TTTAttributedLabel和YYtext的不同用法

热门文章

  1. 全网最全、最新Maven构建工具核心知识,这篇文章包你这辈子也忘不掉Maven!!
  2. 7个问题教你正确选择POE供电设备
  3. Canvas画电路图
  4. JavaScript前端面试常考算法模板
  5. asp.net台球俱乐部管理系统
  6. 利用VASP进行弹性模量的计算笔记
  7. mysql 指令格式
  8. java ssh 分页插件,mybatis分页插件mybatis-paginator问题
  9. 快速搞懂web2.0
  10. python绘制动态圆_python – 在2D动画上绘制可变大小和位置的圆圈