海康摄像机RTSP连接Opencv读取视频

使用VLC验证RTSP格式

1、下载VLC media player
2、找到正确的RTSP格式
可以参考的网络资源有很多,但大部分都不太适用。我适用的rtsp地址格式参考了:
RTSP取流之海康威视
官方海康RTSP取流URL格式
具体记录请看下一个部分——RTSP地址格式。
3、用VLC打开RTSP地址进行查看

海康摄像机RTSP连接Opencv读取视频_第1张图片海康摄像机RTSP连接Opencv读取视频_第2张图片
只要输入的RTSP地址是正确的额,就会显示监控图像

以上步骤参考博客opencv+海康威视实时rtsp视频流链接。
博客RTSP视频流显示(海康威视)中比较详细的讲解了通过串流的方法使用VLC打开监控视频,但是我并没有成功打开。走到最后一步,我的软件直接闪退了,这里做一下备注,希望以后能找到原因。

RTSP地址格式

在网上查了很多有关RTSP格式,但是都没有尝试成功。原因之一是除了端口、IP、密码之外我并不知道目前使用的摄像机的型号、其他参数设置。根据网上多篇博客的介绍,试过了好几种格式,都没有连接成功。
最后在RTSP取流之海康威视这篇博客里发现:
1、海康默认的RTSP端口是554,而我一直写成8000
2、通道号1主码流应为Channels/101,而不是ch1或者Channels/1

	//运行成功的RTSP地址格式
    string s_rtsp = "rtsp://admin:[email protected]:554/Streaming/Channels/101";//修改了端口554,预览取流//RTSP端口默认554未做改动
	VideoCapture camer = VideoCapture(s_rtsp);

官方海康RTSP取流URL格式里介绍的rtsp格式也可以打开视频

 string s_rtsp = "rtsp://admin:[email protected]:554/h264/ch1/main/av_stream";//也可以打开视频

海康摄像机RTSP连接Opencv读取视频_第3张图片其他参考博客opencv+海康威视实时rtsp视频流链接

使用opencv的VideoCapture打开摄像机视频
#include "stdafx.h"
#include 
#include 
#include 
#include 

using namespace std;
using namespace cv;

int main()
{    
	 string s_rtsp = "rtsp://admin:[email protected]:554/Streaming/Channels/101";//修改了端口554,预览取流//RTSP端口默认554未做改动
	 VideoCapture camer_cap;
	 camer_cap.open(s_rtsp);//

	 if (camer_cap.isOpened())
	{
		Mat frame;
		namedWindow("video");
		while (camer_cap.read(frame))
		{
			imshow("video", frame);//frame图像尺寸是1080x1920
			waitKey(30);
		}
		camer_cap.release();
	}
	return 0;
}

程序运行效果如下,获取的frame图像尺寸是1080x1920的尺寸,有些过于大了。


可以添加resize命令,调整图像的显示大小。

resize(frame, frame, Size(760, 540));//frame图像尺寸调整为760x540

海康摄像机RTSP连接Opencv读取视频_第4张图片
至此,可以调用海康摄像头视频作为输入,在此基础上完成后续的opencv图像处理!

目前的不足之处

1个摄像头,多个人使用,实在不方便。后续会自己买个摄像头,这样需要远程连接。

VLC rtsp串流

VLC搭建RTSP直播流,图文介绍:这篇博客讲解了将本地视频片段转化成rtsp视频流,感觉这个方法更实用。因现实中的摄像机因为角度等其他原因,不太容易获取到合适的视频素材。这个方法就可以从网上获取合适的监控视频,然后用海康SDK或者Opencv进行后续处理。
这方面的内容会在后续继续添加。

你可能感兴趣的:(HK)