参考文章:
方式一: 使用VideoCapture读取视频流
在使用OpenCv处理视频时,无论是视频文件还是摄像头画面,都要使用VideoCapture类来进行每一帧图像的处理。当我们使用视频文件作为参数时,OpenCv则打开视频文件,进行每一帧画面的读取。当我们传递摄像机编号时,OpenCv则打开相机,实时读取相机画面。
获取VideoCaptrue实例:
# 读取视频文件
cv2.VideoCapture('video.mp4')
# 打开摄像机
cv2.VideoCapture(0)
使用VideoCapture读取海康RTSP流
RTSP流
在使用OpenCv进行计算机视觉处理时,我们很多时候需要连接外部相机,如海康威视。监控相机的常见视频传输协议有:RTSP、RTMP(以RTSP为主)
RTSP与RTMP比较:
- RTSP:低时延,实现难度大,适合视频聊天和视频监控
- RTMP:低时延,实现难度大,适合视频聊天和视频监控
目前市面上的相机大多以RTSP流协议为主。
在读取海康相机时,需要使用VideoCapture读取RTSP流协议的内容,而不是通过相机编号直接读取。
"""
海康相机rtsp格式:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
channel: 通道号,起始为1。例如通道1,则为ch1。
subtype: 码流类型,主码流为main,辅码流为sub。
"""
使用VideoCapture读取RTSP流示例:
# 使用rtsp流打开相机
def open_camera(username: str, password: str, ip: str, port: int):
"""
使用rtsp流打开相机
rtsp格式:rtsp://[use

本文介绍了如何使用OpenCV的VideoCapture类读取网络摄像头的实时视频流,特别是通过RTSP协议连接海康等监控相机。文中提供了通过VideoCapture打开本地视频文件、RTSP流以及创建多线程处理视频帧的示例代码,强调了在处理RTSP流时可能出现的问题和解决方案,包括使用TCP传输协议增强稳定性以及利用队列和线程进行并发处理。
483

被折叠的 条评论
为什么被折叠?



