Opencv3+Python比较常见的是播放本地avi视频文件、或者捕获PC自带摄像头视频。

现在网络摄像机遍布,而我们测试时也需要用到网络摄像机的实时视频,并进行处理,参考《opencv3计算机视觉(python语言实现)》编写了捕获网络摄像机实时视频的代码。


前提:

1、opencv+python的ffmpeg库配置ok,即videocapture返回TRUE。配置方法可以参考另一篇博文。

2、测试的网络摄像机支持rtsp协议网络串流播放(比如可以通过vlc串流播放)。

wKiom1fYvR3g-QT2AAAo9__GAQI249.png-wh_50


代码如下:


#蓝色字体的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()需要指定编码器,同时帧率及视频分辨率也需要传入。