Opencv3+Python比较常见的是播放本地avi视频文件、或者捕获PC自带摄像头视频。
现在网络摄像机遍布,而我们测试时也需要用到网络摄像机的实时视频,并进行处理,参考《opencv3计算机视觉(python语言实现)》编写了捕获网络摄像机实时视频的代码。
前提:
1、opencv+python的ffmpeg库配置ok,即videocapture返回TRUE。配置方法可以参考另一篇博文。
2、测试的网络摄像机支持rtsp协议网络串流播放(比如可以通过vlc串流播放)。
代码如下:
#蓝色字体的rtsp URL根据各自网络摄像机定义的格式,部分需要添加认证信息,格式即为:rtsp://username:password@ip/***
cap = cv2.VideoCapture('rtsp://192.168.1.60/stream2')
#判断是否正常开启
print cap.isOpened()
frameNum = 1
while(cap.isOpened()):
ret,frame = cap.read()
print frameNum
frameNum = frameNum + 1
cv2.imshow('frame',frame)
#每10帧存储一张图片
if frameNum%10 == 1:
cv2.imwrite('p_w_picpath'+str(frameNum)+'.jpg',frame)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
里面没有写视频的存储,如果需要存储视频,使用VideoWriter即可,注意其中参数VideoWriter_fourcc()需要指定编码器,同时帧率及视频分辨率也需要传入。