1、用摄像头捕获视频:openCV为摄像头提供了简单的接口,可以捕获一段视屏,并将其转换成灰度视屏显示出来,
创建一个VideoCapture对象,用于获取视频,其参数可以是设备的索引号或者一个视频文件,
设备索引号就是指定要使用的摄像头,一般笔记本默认内置摄像头,参数0.可以通过设成1或其他选择别的摄像头。
之后可以一帧一帧捕获视频,最后不要忘了停止捕获视屏
# 有时cap可能不能成功的而初始化摄像头设备,可以使用cap.isOpened()来检查是否成功初始化,返回True则没问题。否则使用函数cap.open()
# 可以使用函数cap.get(prpId)来获取视频的一些参数信息,这里propId可以是0-18之间的任何整数,每一个数代表视频的一个属性,其中一些值可以使用cap.get(propId,value)来修改,
# value是你想要设置成的新值。eg:cap.set(3)、cap.get(4)默认是640*480; 但使用 ret=cap.set(3,320)和ret=cap.get(4,240)将宽高改为320*240
1 import numpy as np
2 import cv2
3 #camera_number=0
4 # cv2.CAP_DSHOW是作为一部分传递的标志,可以传递很多标志,这个特定于微软,是个附加值,若要打开摄像机2,可以执行cv2.CAP_DSHOW+1
5 #cap=cv2.VideoCapture(0)
6 # 使用上述的句子,报错[ WARN:0] global C:projectsopencv-pythonopencvmodulesvideoiosrccap_msmf.cpp (674) SourceReaderCB::~SourceReaderCB terminating async callback
7 # 修改为下述句子
8 cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
9
10 while(True):
11 # 逐帧捕获视频,返回一个布尔值,帧读取正确为true,通过检查他的返回值来查看视频文件是否已经到达了结尾
12 # 有时cap可能不能成功的而初始化摄像头设备,可以使用cap.isOpened()来检查是否成功初始化,返回True则没问题。否则使用函数cap.open()
13 # 可以使用函数cap.get(prpId)来获取视频的一些参数信息,这里propId可以是0-18之间的任何整数,每一个数代表视频的一个属性,其中一些值可以使用cap.get(propId,value)来修改,
14 # value是你想要设置成的新值。eg:cap.set(3)、cap.get(4)默认是640*480; 但使用 ret=cap.set(3,320)和ret=cap.get(4,240)将宽高改为320*240
15 ret,frame=cap.read()
16 # 对框架进行操作,转化为灰度视屏
17 gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
18 # 显示结果框架
19 cv2.imshow('frame',gray)
20 if cv2.waitKey(1)&0xFF==ord('q'):
21 break
22 # 完成所有操作后释放捕获
23 cap.release()
24 cv2.destroyAllWindows()
2、从文件中播放视频
和摄像头捕获一样,只需要把设备索引号该城视频文件的名字,在播放每一帧时,使用cv2.waiKey()设置适当的持续时间
设置太低播放快,设置高则播放慢,一般25毫秒即可
1 import numpy as np
2 import cv2
3 cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
4 fourcc=cv2.VideoWriter_fourcc(*'XVID')
5 out=cv2.VideoWriter('output.avi',fourcc,20.0,(640,480))
6 while(cap.isOpened()):
7 ret,frame=cap.read()
8 if ret==True:
9 frame=cv2.flip(frame,0)
10 out.write('frame',frame)
11 if cv2.waitKey(1)&0xFF==ord('q'):
12 break
13 else:
14 break
15 cap.release()
16 out.release()
17 cv2.destroyAllWindows()