OpenCV获取网络摄像头实时视频流
1、RTSP协议
RTSP (Real Time Streaming Protocol),是一种语法和操作类似 HTTP 协议,专门用于音频和视频的应用层协议。 和 HTTP 类似,RTSP 也使用 URL 地址。同时我们也要了解到摄像机传输数据用的是码流,高清网络摄像机产品编码器都会产生两个编码格式,称为主码流和子码流。这就叫双码流技术。目的是用于解决监控录像的本地存储和网络传输的图像的质量问题。双码流能实现本地和远程传输的两种不同的带宽码流需求,本地传输可以用主码流,能获得更清晰的存储录像,远程传输就因为带宽限制的原因,而使用子码流来获得流畅的图像和录像。通过RTSP协议传输不同的码流,但是各大摄像头厂家的RTSP协议地址不大一样。通常你只要知道摄像头IP地址,用户名密码就行了。
海康的RTSP协议地址
rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
1) username 用户名,常用 admin
2) password 密码,常用 12345
3) ip 摄像头IP,如 192.0.0.64
4) port 端口号,默认为 554,可以不写
5) codec 视频编码模式,有 h264、MPEG-4、mpeg4 等,可以不写
6) channel 通道号,起始为1,例如通道1,则为 ch1
7) subtype 码流类型,主码流为 main,辅码流为 sub
大华的RTSP协议地址如下:
rtsp://[username]:[password]@[ip]:[port]/cam/realmonitor?[channel=1]&[subtype=1]
1) username、password、ip、port 同上
2) channel 通道号,起始为1,例如通道2,则为 channel=2
3) subtype 码流类型,主码流为0(即 subtype=0),辅码流为1(即 subtype=1)
2、OpenCV中读取网络摄像头
OpenCV读取网络摄像头很简单,直接用url设定rtsp地址,用VideoCapture读取视频就行了。但是RTSP有些许问题,所以在最后通过TCP传输协议上承载RTSP,保证稳定性。就在rtsp地址后面加?
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>int main(){cv::VideoCapture vcap;cv::Mat image;//网络摄像头地址const std::string videoStreamAddress = "rtsp://admin:admin123@192.168.0.109:554/cam/realmonitor?channel=1&subtype=0";/* it may be an address of an mjpeg stream,e.g. "http://user:pass@cam_address:8081/cgi/mjpg/mjpg.cgi?.mjpg" *///open the video stream and make sure it's openedif (!vcap.open(videoStreamAddress)) {std::cout << "Error opening video stream or file" << std::endl;return -1;}cv::namedWindow("Output Window");for (;;) {if (!vcap.read(image)) {std::cout << "No frame" << std::endl;cv::waitKey();}cv::imshow("Output Window", image);if (cv::waitKey(1) >= 0) break;}
}
OpenCV获取网络摄像头实时视频流相关推荐
- [常用工具] OpenCV获取网络摄像头实时视频流
所需要硬件及软件环境: python 3/OpenCV3.4 or C++11/OpenCV3.4 1 RTSP协议 RTSP (Real Time Streaming Protocol),是一种语法 ...
- C#通过OpenCv获取网络摄像头(IP摄像头)拍摄到的视频
@TOC 本文介绍 本文介绍利用C#获取IP摄像头拍摄到的实时视频 说在前面 首先需要一台支持rtsp协议的网络摄像头(购买的时候会有说明,或者问客服) 环境:visual studio 2017 网 ...
- 利用opencv获取网络摄像头数据并显示报错 select() timeout
opencv官网demo-Capture Video from Camera : import numpy as np import cv2 as cv cap = cv.VideoCapture(0 ...
- 网络摄像头python_Python OpenCV 调用网络摄像头
OpenCV调用摄像头 环境 python:python3.6 摄像头:网络摄像头 Python库:openCV # -*- coding: utf-8 -*- # @author leone # @ ...
- OpenCV 调用网络摄像头
OpenCV调用摄像头 环境 python:python3.6 摄像头:网络摄像头 Python库:openCV # -*- coding: utf-8 -*-# @author leone # @d ...
- 使用Python,OpenCV实现图像和实时视频流中的人脸模糊和马赛克
使用Python,OpenCV实现图像和实时视频流中的人脸模糊和人脸马赛克 1. 效果图 2. 原理 2.1 什么是人脸模糊,如何将其用于人脸匿名化? 2.2 执行人脸模糊/匿名化的步骤 3. 源码 ...
- opencv 打开网络摄像头
闲着没事从同学那里找到了个openwrt ,突然间想起来OPENCV可以很轻松的打开自带的摄像头,刚开始学习OPENCV 打开过若干次笔记本的摄像头,OPENCV能否打开网络摄像头呢?在百度上搜资 ...
- 使用ONVIF Device Test Tool获取网络摄像头的音/视频
软/硬件准备 1.一个网络摄像头(IPC),品牌必须支持ONVIF协议,具体哪些品牌支持不作为本教程介绍的重点,大家可自行度娘,我知道的有品牌大华和海康威视; 2.ONVIF Device Test ...
- html 输入框并行,Python:输入文本框并行捕获userinput到OpenCV Live网络摄像头图像...
我有一个简单的脚本运行流式传输我的网络摄像头的图像,我想做一些像canny-filter和hough转换一样的操作来检测liveimage中的行:Python:输入文本框并行捕获userinput到O ...
最新文章
- 微软宣布MySQL和PostgreSQL的Azure数据库服务正式可用
- 编译时异常和运行时异常的区别
- 浅谈Spring MVC知识
- Java中使用递归算法实现子级架构的查询
- Linux之查看ubuntu版本
- python中的sort,sorted
- 腾讯海量存储与CDN的自动化运维
- python基础:序列(列表、元组、字符串)、函数、字典、集合
- java io顺序_Java顺序IO性能
- arrays中copyof复制两个数组_Java的数组初识和拷贝用法
- 【剑指offer】面试题14- I:剪绳子(Java)
- 推荐一个Silverlight多文件(大文件)上传的开源项目(转载)
- SRM 207 Div II Level Two: RegularSeason,字符串操作(sstream),多关键字排序(操作符重载)...
- UVA10317- Equating Equations(回溯+剪枝)
- SQL Server的下载和安装
- unity识别图片颜色并把颜色数量排序
- day15-医生的处方、道士的鬼符、程序员的正则表达式
- 计算机发展简史的ppt教程,计算机发展简史PPT.ppt
- TextView 加下划线 、 中划线
- 游戏后台之内存管理篇