概述
OpenCV版本要求在2.3.1以上
本文主要介绍如何在Python中用OpenCV读取、保存和播放一段视频流以及用OpenCV来调用摄像头。
1.调用摄像头
为了捕捉摄像头的画面,我们首先要生成一个VideoCapture对象,这个对象的参数可以是设备号或者是视频文件的名称。设备号可以在/dev下查看,我的摄像头的设备名称是video0,所以设备号就是0。获得了VideoCapture对象后,我们就能通过这个对象的read函数来一帧一帧地获得图像了。
以下程序的效果是:从摄像头中获得图像,并把它转换成灰度图像,最后显示出来。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
其中,cap.read()还会返回一个bool类型的值,它代表返回的这一帧图像是否是正确的。我们可以检查这个返回值来确定一段视频是否已经播放到头了。
有时,cap会无法初始化capture,如果我们要检查初始化是否正常,可以使用cap.isOpened()这个函数。如果返回True,则用cap.open()来打开。
我们还能通过cap.get(proId)来获得一些视频的属性,并且通过cap.set(proId,value)来修改某些属性。proId的取值范围是0到18。
举个例子,我们可以通过cap.get(3)和cap.get(4)来获得视频的帧宽度以及帧高度,然后通过get函数去修改它们。
2.播放一个视频文件
播放视屏文件的流程几乎和调用摄像头是一样的,但是我们在调用摄像头中有一个重要的东西没讲,那就是我们要为cv.waitKey()设置一个合适的延时,如果延时太小,那么视频就会很快,如果延时太大,那么视频就会变得很慢(用这个方法可以去看慢动作),通过设这个值为1是比较合适的。
import numpy as np
import cv2
cap = cv2.VideoCapture('vtest.avi')
while(cap.isOpened()):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3,保存视频文件
保存视频文件的流程略微复杂,首先我们需要确定以下的一些参数:视频的FourCC格式、视频的尺寸、视频每秒的帧数以及视频的颜色。然后根据这些参数,我们生成一个VideoWriter对象来保存这段视频文件。
设置FourCC格式时,原文里采用了cv2.VideoWriter_fourcc()这个函数,但我在运行程序的时候显示这个函数不存在,所以我改用了
cv2.cv.CV_FOURCC这个函数。关于FourCC该采用哪种格式,请参考最下面的原文。
下面的范例代买从摄像头中捕捉视频,并把这个视频倒立以后进行保存。
翻译自http://docs.opencv.org/trunk/doc/py_tutorials/py_gui/py_video_display/py_video_display.html#display-video
最后
以上就是慈祥网络为你收集整理的Python-OpenCV教程-2的全部内容,希望文章能够帮你解决Python-OpenCV教程-2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复