python+opencv调用ip摄像头(基于RTSP实现)
采用RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,RTSP是TCP/IP协议体系中的一个应用层协议实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法
利用RTSP+opencv就可以实现网络摄像头的调用1
python代码如下:
# -*- coding: utf-8 -*-
"""
Created on Thu May 23 12:15:24 2019
通过rtsp即实时流传输协议基于TCP/IP协议体系中的一个应用层协议,控制声音或影像的多媒体串流协议。
opencv提供处理画面窗口函数
@author: WFYUN
"""
import cv2
#调用多摄像头画面
#采用rtsp实时流传输协议,各版本IP摄像头rtsp地址见:https://blog.csdn.net/jin_huan11/article/details/78834284
cam_url='rtsp://admin:kd12345678@192.168.137.100:554/Streaming/Channels/201'
#用以下模板调用其他摄像头,仅限海康
#cam_url='rtsp://admin: 密码 @ IP :554/Streaming/Channels/201'
cap=cv2.VideoCapture(cam_url) #调用IP摄像头
if cap.isOpened():
rval, frame = cap.read() #读取视频流
else:
cap.open(cam_url) #打开读取的视频流
rval = False
print("error")
while rval:
frame=cv2.resize(frame,(720,720)) #调节输出图像的大小
cv2.imshow("cam_num1", frame) #显示视频流
rval, frame = cap.read()
key = cv2.waitKey(1)
if key == 27: #按ESC键退出
break
cap.release() #释放摄像头
cv2.destroyAllWindows() #关闭窗口
感谢博主https://blog.csdn.net/jin_huan11/article/details/78834284提供各个品牌摄像头RTSP地址