当前位置: 首页 > 后端技术 > Python

只需几行代码,Python就可以捕获、播放和保存摄像头视频!

时间:2023-03-26 19:01:10 Python

前几天有读者在粉丝群提问:Python是如何提高视频清晰度和对比度的?使用Python操作视频这方面我之前没有涉及,所以很抱歉告诉读者朋友我还没有涉及。这两天想了想,觉得应该把这一段的内容补充一下。一方面可以增加我的研究广度,另一方面也可以为粉丝答疑解惑。今天分享一下Python操作视频最基本的操作,包括读取播放视频和保存视频。读取视频要捕获视频,您需要创建一个VideoCapture对象。它的参数可以是设备索引或视频文件的名称。因此,我们有两种读取视频的方式,即从摄像头读取视频和从文件读取视频。从摄像头读取视频对于带有摄像头的设备,比如带摄像头的笔记本电脑,我们可以直接调出电脑的摄像头,读取摄像头的视频流。importcv2ascvcap=cv.VideoCapture(0)ifnotcap.isOpened():print("Cannotopencamera")exit()whileTrue:#逐帧捕捉ret,frame=cap.read()#ifread正确取帧,ret为Trueifnotret:break#显示结果帧cv.imshow('frame',frame)ifcv.waitKey(1)==ord('q'):break#所有操作完成后,释放捕获Detectorcap.release()cv.destroyAllWindows()这里我给VideoCapture对象传递了参数0,表示设备索引,也就是指定哪个摄像头的编号。通常会连接一个摄像头(就像我的情况一样)。所以我直接传0,传1就可以选择第二个摄像头,以此类推。cap.isOpened()用于判断视频是否被捕获。cap.read()返回一个布尔值(True/False)。如果框架被正确读取,它将是True。所以你可以通过检查这个返回值来检查视频的结束。cv.imshow方法用于显示视频帧。我们视频播放的原理是逐帧播放。最后,不要忘记通过cap.release()释放俘虏。运行这段代码,您可以看到一个弹出窗口实时播放来自您的计算机摄像头的图像。从文件中播放视频与从相机中捕获视频相同,只是用视频文件名更改相机索引。另外,在显示视频时,可以通过cv.waitKey()来控制视频播放的速度。设置太小,视频播放速度会很快,相当于倍速播放;如果太大,视频会变得很慢,相当于延迟播放。通常25毫秒就可以了。importcv2ascvcap=cv.VideoCapture('video.mp4')whilecap.isOpened():ret,frame=cap.read()#如果帧读取正确,ret为Trueifnotret:breakcv.imshow('frame',frame)ifcv.waitKey(1)==ord('q'):breakcap.release()cv.destroyAllWindows()运行这段代码,你可以看到一个弹出窗口播放你选择的视频文件.保存视频从摄像头读取视频,我们可以将视频保存到本地。我们捕获一段视频,逐帧处理,如果我们想保存这段视频,很简单,只需要使用cv.VideoWriter()。cv.VideoWriter()有5个参数:参数1:输出文件名,例如:output.mp4。参数2:FourCC码,FourCC是一个4字节的代码,用来指定视频编解码器。参数3:帧率数。参数4:帧大小。参数5:颜色标志。如果为True,则正常颜色输出,否则为灰色图像输出。关于FourCC和视频格式的比较,我列举了一些常见的格式:cv2.VideoWriter_fourcc('P','I','M','1')=MPEG-1codeccv2.VideoWriter_fourcc('M','J','P','G')=motion-jpeg编解码器-->mp4vcv2.VideoWriter_fourcc('M','P','4','2')=MPEG-4.2编解码器cv2.VideoWriter_fourcc('D','I','V','3')=MPEG-4.3编解码器cv2.VideoWriter_fourcc('D','I','V','X')=MPEG-4编解码器-->avicv2.VideoWriter_fourcc('U','2','6','3')=H263编解码器cv2.VideoWriter_fourcc('I','2','6','3')=H263I编解码器cv2.VideoWriter_fourcc('F','L','V','1')=FLV1编解码器保存视频的代码:importcv2ascvcap=cv.VideoCapture(0)#定义编解码器并创建VideoWriter对象fourcc=cv.VideoWriter_fourcc(*'MJPG')out=cv.VideoWriter('output.mp4',fourcc,20.0,(640,480))whilecap.isOpened():ret,frame=cap.read()ifnotret:breakframe=cv.flip(frame,1)#写入翻转的帧out.write(frame)cv.imshow('frame',frame)ifcv.waitKey(1)==ord('q'):break#Afterworkdonereleaseall内容cap.release()out.release()cv.destroyAllWindows()运行这段代码,可以在代码目录下找到一个视频文件output.mp4。上述代码中,如果要退出视频操作,只需按键盘上的q即可。综上所述,以上就是今天要介绍的内容。使用python-opencv操作视频比较简单。当然你也可以在读取或者保存视频的时候对视频进行一些处理,这个我们后面会介绍。以上就是本次分享的全部内容。如果觉得文章还不错,请关注公众号:Python编程学习圈,每日干货分享,或者去编程学习网了解更多编程技术知识。