从海康摄像机上读取RTSP视频流并存储当前帧到本地

您所在的位置:网站首页 海康威视摄像头怎样调整清晰度 从海康摄像机上读取RTSP视频流并存储当前帧到本地

从海康摄像机上读取RTSP视频流并存储当前帧到本地

#从海康摄像机上读取RTSP视频流并存储当前帧到本地 | 来源: 网络整理| 查看: 265

整体流程:

1.1 从数据库中获取相机编码

1.2 结合海康平台的AK\SK以及发布的轮子接口获取相机的RTSP

1.3 使用Opencv-Python读取RTSP并存储图像\

模块一:从数据库中获取相机编码

1.1 连接数据库(连接名称、用户名、密码、端口、数据库名称、字符编码、生成游标对象)

1.2 执行Sql语句

import pymysql class BaseSetMySql(): # 连接数据库基础参数 def __init__(self): # 连接数据库 self.conn = pymysql.connect(host='192.168.32.22' # 连接名称,默认127.0.0.1 , user='root' ## 用户名 , passwd='root' # 密码 , port=3306 # 端口,默认为3306 , db='AllIndexcode' # 数据库名称 , charset='utf8' # 字符编码 ) self.cur = self.conn.cursor() # 生成游标对象 # Sql语句 self.Sql = 'SELECT indexcode FROM `cameraid`' # 查询企业摄像机编码的SQL # 获取摄像机编码 def GetCamID(self): try: self.cur.execute(self.Sql) # 执行插入的sql语句 CamID = self.cur.fetchall() return CamID except: self.conn.commit() # 提交到数据库执

模块二:根据相机编码获取RTSP

2.1 将获取到的相机ID对海康接口发送POST请求

2.2 筛选海康返回参数中含有RTSP的数据

2.3 这部分的改进可以参考:juejin.cn/post/707626… 这里是关于返回RTSP参数的各种情况

import requests class BaseSetRTSP(): def __init__(self): # 接口 self.UrlCode = 'http://xxx.x.xxx.xxx:xxxx/xxxxxxxxx/xxxxxxxxxx' # 获取企业的RTSP def GetRTSP(self,CamId) RestInfo = self.UrlCode + CamId RestData = requests.get(RestInfo) RestDataDict = RestData.json() RTSP = None RightInfo = "rtsp" in str(RestDataDict) if RightInfo is True: Data_RestDataDict = ((eval(RestDataDict['data']))['data']) RTSP = Data_RestDataDict['url'] return RTSP

模块三:使用Opencv-Python读取RTSP并存储图像

3.1 需要判定在RTSP模块中获取RTSP是否为None,只有不为None的才会有RTSP 3.2 图像命名采用UUID各种命名避免重复 3.3 这个里面涉及到了一个RTSP连接超时和掉帧现象

import uuid import cv2 class SaveFrame(): def __init__(self): pass # 存视频图像 def SaveFrame(self, CAMID, RTSP): if RTSP is not None: VideoCap = cv2.VideoCapture(RTSP) ret, frame = VideoCap.read() if ret: FrameName = "_" + str(CAMID) + "_" + str(uuid.uuid1()) cv2.imwrite('D:/Pecker/imgs/%s.jpg' % FrameName, frame) print("成功截图", FrameName) VideoCap.release()



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3