1.拆分视频为帧图片

import cv2
def video2frame(videos_path,frames_save_path,time_interval):
vidcap = cv2.VideoCapture(videos_path)
success, image = vidcap.read()
count = 0
while success:
success, image = vidcap.read()
count = count + 1
if count % time_interval == 0:
cv2.imencode('.jpg', image)[1].tofile(frames_save_path + "frame%d.jpg" % count)
print('一共{}张,选取其中{}张'.format(count,int(count/time_interval))) if __name__ == '__main__':
videos_path = 'C:\\Users\\cjk\\Desktop\\test.mp4' #视频的存放路径
frames_save_path = 'C:\\Users\\cjk\\Desktop\\images\\' #视频切分成帧之后图片的保存路径
time_interval = 5 #每5帧保存一次
video2frame(videos_path, frames_save_path, time_interval)

2.用帧图片合成视频

import cv2
import os
import numpy as np
from PIL import Image def 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.VideoWriter_fourcc(*'XVID')
videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
for 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)
videoWriter.release() if __name__ == '__main__':
im_dir = 'C:\\Users\\cjk\\Desktop\\images\\'#帧存放路径
video_dir = 'C:\\Users\\cjk\\Desktop\\ok.avi' #合成视频存放的路径
fps = 30 #帧率
frame2video(im_dir, video_dir, fps)

3.查看视频分辨率

import os,time
import cv2 #获取文件夹中的文件名列表
def get_file_list(file_path):
dir_list = os.listdir(file_path)
if not dir_list:
return
else:
dir_list = sorted(dir_list,key=lambda x: os.path.getmtime(os.path.join(file_path, x)))
return dir_list file_path = 'H:\视频\\' dir_list = get_file_list(file_path)
#获取使用cv2获得视频的分辨率width和height。
def get_vedio_height_width(filename):
cap = cv2.VideoCapture(filename)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH )
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
#print(width,height)
return width,height if __name__ == '__main__':
for dir in dir_list:
width,height = get_vedio_height_width(file_path+dir)
print('文件名:',dir)
print('分辨率:',width,height)

python视频与帧图片的相互转化,以及查看视频分辨率的更多相关文章

  1. python提取视频第一帧图片

    一.实现代码 # -*- coding: utf-8 -*- import cv2 from PIL import Image from io import BytesIO def tryTime(m ...

  2. 第五十二篇、 OC获取视频的第一帧图片thumbnailImage

    获取视频的第一帧图片 有时候我们拍摄完视频后,希望获取一张图片当作这个视频的介绍,这个图片thumbnailImage可以从视频的第一帧获取到. 我们的思路是先获取视频的URL,然后初始化一个MPMo ...

  3. C#视频取帧图

    由于项目里页面有许多视频资料需要展示给用户查看,因此需要做一个视频列表,原设计是列表显示视频第一帧图,但实际上很多视频第一帧是纯黑底色. 于是想到用js利用canvas截图,最后发现由于浏览器跨域限制 ...

  4. 「小程序JAVA实战」小程序查看视频发布者信息(64)

    转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxuchakanshipinfabuzhexinxi63/ 当我们点击右下 ...

  5. python工具-将视频按帧截取图片(附代码)

    描述:将一个视频流按帧数截取大量的图片 用途:AI的数据集制作,得到大量的图片,之后将其打标签 更改的地方 1.default--间隔的帧数   2.input/output--输入视频的路径.存放截 ...

  6. python 从视频中提取图片,并保存在硬盘上

    使用python的moviepy库来提取视频中的图片,按照视频每帧一个图片的方式来保存. extract images from video, than save them to disk from ...

  7. python 视频处理,提取视频相关帧,读取Excel

    一共这几个模块: class videoReader 读取视频 class videoFramesExtractor(videoReader):继承了读取视频,主要是用来限制读取视频中的哪些帧,并保存 ...

  8. Python+Opencv实现把图片转为视频

    1. 安装Opencv包 在Python命令行输入如下命令(如果你使用的Anaconda,直接进入Anaconda Prompt键入命令即可.如果你不知道Anaconda是什么,可以参考王树义老师的文 ...

  9. Python opencv提取视频中的图片

    作者:R语言和Python学堂链接:https://www.jianshu.com/p/e3c04d4fb5f3 这个函数就是本文要介绍的video2frames()函数,功能就是从视频中提取图片,名 ...

随机推荐

  1. Spring源码 03 IOC原理

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  2. Docker 07 部署Tomcat

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  3. Docker 04 容器命令

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  4. 大家都能看得懂的源码 - ahooks useSet 和 useMap

    本文是深入浅出 ahooks 源码系列文章的第十篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 今天我们来聊聊 ahooks 中对 Map 和 Set 类型进行状 ...

  5. 【Java】学习路径53-InetAdress获取服务器ip

    InetAdress如何使用? import java.net.*; public class InetAdress { public static void main(String[] args) ...

  6. 第四十一篇:Vue生命周期(二)

    好家伙,书接上回 上图:(Vue官网中Vue实例图片的下半张) 以下为解释: 5.1.1. mounted执行完后,表示整个Vue实例已经初始化完毕了; 此时,组件已经脱离了创建阶段;进入到运行阶段 ...

  7. Windows平台摄像头或屏幕RTMP推送介绍:OBS VS SmartPublisher

    好多开发者问道,既然有了OBS,你们为什么还要开发SmartPublisher? 的确,在我们进行Windows平台RTMP推送模块开发之前,市面上为数不多的Windows平台RTMP推流工具当属OB ...

  8. Vmware虚拟主机启动卡死问题解决

    记录一次虚拟主机开机卡死,黑屏,无法操作的问题 一.问题现象 1.在vmware上新建数台主机后,第一次启动都正常,部分主机出现关机后再开机(或直接重启)卡死的情况: 2.在vmware上右键菜单栏均 ...

  9. Linux 常用脚本命令

    Linux 常用(脚本)命令 1. 统计目录下文件个数 ll |grep "^-"|wc -1 解释 grep "^-"表示抓取以-开头的行(其他忽略)

  10. losf命令详解

    一.概念:lsof全名list opened files,也就是列举系统中已经被打开的文件,进程打开的端口(TCP.UDP).linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至socke ...