Python+Opencv解析一段视频并逐帧保存到本地
实现原理
使用Python+Opencv,把视频流直接按帧率解析成图片,并保存到本地
特点
可以做到无视视频的长短,视频的帧率。多长就解析多长,多少帧率就解析多少帧率,视频解析完直接退出,避免影响内存或者Opencv窗口卡死
实现的效果
针对一个本地视频:
①时长:从1.02-4.22,共计3.21s
②图片:每秒60张,视频解析出来共计3*60+21=201张图片,如下:
脚本
# -*- coding: cp936 -*-
"""
Author:NoamaNelson
Date:2019-11-15
Discription:Reading video swtich to picture and save
"""
import cv2,os,time
import 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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY