Python运用VideoCapture读取录像或监控摄像头然后进行储存
此篇文章主要是给大家介绍一下OpenCV中cv2.VideoCapture函数的应用,并通过cv2.VideoCapture读取录像或监控摄像头及其开展储存帧图象或者视频,感兴趣的朋友可以看看。 一、词法:cap=cv2.VideoCapture(0) 表明:主要参数0表明默认笔记本电脑的内嵌第一位监控摄像头,必要时载
来源: https://www.ucloud.cn/yun/128696.html 作者: 89542767 发布日期: 发布于2022-12-21 21:46
此篇文章主要是给大家介绍一下OpenCV中cv2.VideoCapture函数的应用,并通过cv2.VideoCapture读取录像或监控摄像头及其开展储存帧图象或者视频,感兴趣的朋友可以看看。
一、词法:cap=cv2.VideoCapture(0)
表明:主要参数0表明默认笔记本电脑的内嵌第一位监控摄像头,必要时载入已经有的小视频则主要参数改成录像所属途径途径,比如:cap=cv2.VideoCapture('video.mp4')
二、词法:cap.isOpened()
表明:分辨录像目标成功与否载入,取得成功载入录像目标回到True。
三、词法:ret,frame=cap.read()
表明:按帧载入录像,传参ret是布尔型,恰当载入则回到True,载入不成功或载入视频结尾往往会回到False。frame为每一秒的图象,这儿图象是三维立体引流矩阵,即frame.shape=(640,480,3),载入的图象为BGR格式。
四、词法:key=cv2.waitKey(1)
表明:等候数字键盘,主要参数1表明延迟1ms切换至下每帧,主要参数为0表明表明现阶段帧,等同于中止。
五、载入监控摄像头并储存为视频代码讲解
import cv2
def videocapture():
cap=cv2.VideoCapture(0)#生成读取摄像头对象
width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取视频的宽度
height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取视频的高度
fps=cap.get(cv2.CAP_PROP_FPS)#获取视频的帧率
fourcc=int(cap.get(cv2.CAP_PROP_FOURCC))#视频的编码
#定义视频对象输出
writer=cv2.VideoWriter("video_result.mp4",fourcc,fps,(width,height))
while cap.isOpened():
ret,frame=cap.read()#读取摄像头画面
cv2.imshow('teswell',frame)#显示画面
key=cv2.waitKey(24)
writer.write(frame)#视频保存
#按Q退出
if key==ord('q'):
break
cap.release()#释放摄像头
cv2.destroyAllWindows()#释放所有显示图像窗口
if __name__=='__main__':
videocapture()
六、读取视频并按帧进行保存代码演示:
import numpy as np
import cv2
import os
def video2image(video_dir,save_dir):
cap=cv2.VideoCapture(video_dir)#生成读取视频对象
n=1#计数
width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取视频的宽度
height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取视频的高度
fps=cap.get(cv2.CAP_PROP_FPS)#获取视频的帧率
fourcc=int(cap.get(cv2.CAP_PROP_FOURCC))#视频的编码
#定义视频输出
#writer=cv2.VideoWriter("teswellvideo_02_result.mp4",fourcc,fps,(width,height))
i=0
timeF=int(fps)#视频帧计数间隔频率
while cap.isOpened():
ret,frame=cap.read()#按帧读取视频
#到视频结尾时终止
if ret is False:
break
#每隔timeF帧进行存储操作
if(n%timeF==0):
i+=1
print('保存第%s张图像'%i)
save_image_dir=os.path.join(save_dir,'%s.jpg'%i)
print('save_image_dir:',save_image_dir)
cv2.imwrite(save_image_dir,frame)#保存视频帧图像
n=n+1
cv2.waitKey(1)#延时1ms
cap.release()#释放视频对象
#读取文件夹所有视频,每个视频按帧保存图像
def video2image_multi(video_path,save_path):
video_list=os.listdir(video_path)
for i in range(len(video_list)):
video_dir=os.path.join(video_path,video_list<i>)
cap=cv2.VideoCapture(video_dir)
fps=cap.get(cv2.CAP_PROP_FPS)#视频的帧率
save_num=0
n=1#计数
timeF=int(fps)#视频帧计数间隔频率
while cap.isOpened():
ret,frame=cap.read()
if ret is False:
break
#每隔timeF帧进行存储操作
if(n%timeF==0):
save_num+=1
save_image_dir=os.path.join(save_path,'%s_%s.jpg'%(i,save_num))
cv2.imwrite(save_image_dir,frame)
n=n+1
cv2.waitKey(1)
cap.release()
print('读取第%s个视频完成!!!'%i)
if __name__=='__main__':
video_to_image(r'E:AIvideo.mp4',r'E:AIvideo2image')
以上就是小编给大家介绍的,希望可以给大家带来一定帮助。