用摄像头捕捉视频
#用摄像头捕获视频,并把它转换成灰度图像显示出来
#先创建一个VideoCapture对象,参数可以是设备的索引,或者是一个视频文件。设备索引号就是指定要使用的摄像头。
#一般笔记本都有内置摄像头,所以参数是0(也可以1或者其他来选择其他摄像头)。之后一帧一帧捕获视频,最后,一定要release()
cap=cv2.VideoCapture(0)#创建一个VideoCapture对象,参数为0
while(True):#取帧;灰化;显示;
ret,frame=cap.read()#ret是一个返回值,看是否成功了;frame是返回的一帧一帧的图像
gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#参数还有:cv2.COLOR_BGR2RGB、cv2.COLOR_BGR2HSV、cv2.COLOR_BGR2YCrCb、 cv2.COLOR_BGR2HLS、cv2.COLOR_BGR2XYZcv2.COLOR_BGR2LAB、cv2.COLOR_BGR2YUV
cv2.imshow('frame',frame)
if cv2.waitKey(1)==ord('q'):#waitKey()里的数字越大,延时约厉害,毕竟是等待嘛,hh
break
cap.release()
cv2.destroyAllWindows()
#cap可能不能成功初始化摄像头设备。这种情况下上面的的代码会报错。可以用cap.isOpened(),来检查是否成功初始化了。若返回值是True,没问题。反之要用cap.open()
#可用cap.get(propId)来获取视频的一些信息。propId为0~18.
#可用cap.set(propId,value)来修改值
记录、保存视频
cap=cv2.VideoCapture(0)
#VideoWriter(filename, fourcc, fps, frameSize,[ isColor]) 第一个参数是要保存的文件的路径;fourcc 指定编码器;fps 要保存的视频的帧率;frameSize 要保存的文件的画面尺寸;isColor 指示是黑白画面还是彩色的画面,True为彩色
fourcc=cv2.VideoWriter_fourcc(*'XVID')
out=cv2.VideoWriter('output.avi',fourcc,20,(640,480),True)#改位置的话和上面的图片存入固定目录是一样的
while(cap.isOpened()):
ret,frame=cap.read()
if ret==True:
frame=cv2.flip(frame,0)#倒转,1:水平翻转;0:垂直翻转;-1:水平垂直翻转
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1)==ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()