写点什么

Python+Opencv 解析一段视频并逐帧保存到本地

作者:虫无涯
  • 2023-02-17
    陕西
  • 本文字数:904 字

    阅读完需:约 3 分钟

实现原理

使用 Python+Opencv,把视频流直接按帧率解析成图片,并保存到本地

特点

可以做到无视视频的长短,视频的帧率。多长就解析多长,多少帧率就解析多少帧率,视频解析完直接退出,避免影响内存或者 Opencv 窗口卡死

实现的效果

针对一个本地视频:

①时长:从 1.02-4.22,共计 3.21s

②图片:每秒 60 张,视频解析出来共计 3*60+21=201 张图片,如下:


脚本

# -*- coding: cp936 -*-
"""Author:NoamaNelsonDate:2019-11-15Discription:Reading video swtich to picture and save """
import cv2,os,timeimport numpy as np
class CamaroCap(object):
""" 打开视频流 """ def __init__(self):
self.cap = cv2.VideoCapture("./MVI_1637.MOV") # 视频路径,直接把脚本和视频放在同一个目录下最好,也可以指定对应的视频路径
""" 图片信息打印 """ def get_image_info(self,image): print(type(image)) print(image.shape) print(image.size) print(image.dtype) pixel_data = np.array(image) print(pixel_data)
""" 逐帧读取数据并保存图片到本地制定位置 """ def Camaro_image(self): i = 0 while(True): ret,frame = self.cap.read() #ret:True或者False,代表有没有读取到图片;frame:表示截取到一帧的图片 if ret == False: break self.get_image_info(frame) # print("打印图片信息") 注意:调试的时候可以打开,如果是一直运行程序,建议把这行代码注释掉,避免影响内存占用 cv2.imshow('capture',frame) # 展示图片 cv2.imwrite(r"D:\image\\"+ str(i) + ".jpg",frame) # 保存图片 i = i + 1
if cv2.waitKey(1) & 0xFF == ord('q'): break
if __name__ == '__main__':
outmasages = CamaroCap() outmasages.Camaro_image() # 调用摄像头 outmasages.cap.release() # 释放对象和销毁窗口 cv2.destroyAllWindows()
复制代码


发布于: 刚刚阅读数: 5
用户头像

虫无涯

关注

专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入

CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主

评论

发布
暂无评论
Python+Opencv解析一段视频并逐帧保存到本地_Python_虫无涯_InfoQ写作社区