此篇文章主要是给大家介绍一下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的效果)二、全...
阅读 874·2023-01-14 11:38
阅读 820·2023-01-14 11:04
阅读 672·2023-01-14 10:48
阅读 1830·2023-01-14 10:34
阅读 880·2023-01-14 10:24
阅读 740·2023-01-14 10:18
阅读 469·2023-01-14 10:09
阅读 507·2023-01-14 10:02