此篇文章主要是给大家介绍一下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')以上就是小编给大家介绍的,希望可以给大家带来一定帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128696.html
摘要:这次开始学习从摄像头获取视频使用获取视频要获取视频,需要创建一个对象,参数可以是设备索引摄像头索引或视频文件的名称。 这次开始学习Getting Started with Videos 1从摄像头获取视频 使用cv2.VideoCapture()获取视频. cv2.VideoCapture(builtins.object) 要获取视频,需要创建一个VideoCapture对象,参数可以...
摘要:总结在本文中,我们学习了如何使用中的,即通过代码写了一个人脸检测的程序。 OpenCV是如今最流行的计算机视觉库,而我们今天就是要学习如何安装使用OpenCV,以及如何去访问我们的摄像头。然后我们一起来看看写一个人脸检测程序是如何地简单,简单到只需要几行代码。 在开始之前,我假设你已经对Python有一定的了解。当然,如果你觉得你还不够格,这里有推荐一些学习Python的电子书,你可以...
摘要:同时打印出了手上的每个结点的位置变化。解决方案使用国内镜像安装这时候,考虑使用国内镜像安装,会快很多。点击下面的即可。 文章目录 一、 效果(版本2的效果)二、全...
阅读 1345·2023-01-14 11:38
阅读 1409·2023-01-14 11:04
阅读 1157·2023-01-14 10:48
阅读 2951·2023-01-14 10:34
阅读 1519·2023-01-14 10:24
阅读 1434·2023-01-14 10:18
阅读 896·2023-01-14 10:09
阅读 1086·2023-01-14 10:02