模板代码:
cv::VideoCapture capture(url);
if (!capture->isOpened()) {
//Error
}
cv::namedWindow("TEST", CV_WINDOW_AUTOSIZE);
cv::Mat frame;
while(m_enable) {
if (!capture->read(frame)) {
//Error
}
cv::imshow("TEST", frame);
cv::waitKey(30);
}
注意事项:
用opencv的VideoCapture读取RTSP视频流,只有opencv3.1版本可以,之前的版本都无法读取视频流。可能的原因是云平台的RTSP视频流太差,经常错码。项目最后使用的是opencv2.4.9,然后ffmpeg的dll库用的是opencv3.1的,就可以读取视频流了。
PS:
我自己在调用OPencv获取RTSP流的时候,有客户端卡死的现象,
建议,多插入几个sleep(1), 提前判断设备网络地址是否通断。