目前项目需要对网络摄像头进行实时视觉算法检测。
遇到问题:
在使用抓取VideoCaptureRTSP流的过程中,若需要对图像进行处理,则最后的显示结果画面就会表现出高延迟,然后卡住,很快崩溃;
直观感受:
图像处理速度远不如VideoCapture抓取速度,然后感觉是有内置缓存的,导致卡顿,延迟;对VideoCapture进行等待处理,效果不佳;
解决思路:
采用多线程的方式,为VideoCapture单独开一个线程,自动抓取图像,并且存储到一个容器中,容器若满了自动更新容器,清理掉前面的图像,存储最新的图像;
然后主线程直接生成对象,调用get函数获取到容器中的数据;

实现代码: QT c++版
VideoCapture的线程类
opencvcap.h

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <QThread>
#include <QMutex>using namespace cv;
using namespace std;class OpencvCap :public QThread
{Q_OBJECTpublic:OpencvCap(const char* url);~OpencvCap();void put_frame(Mat frame);bool get_frame(Mat &frame);private:void run() override;//缓存容器vector<Mat> m_vec_frame;//互斥锁QMutex m_mutex;//videocaptureVideoCapture m_cap;
};

opencvcap.cpp

#include "opencvcap.h"OpencvCap::OpencvCap(const char* url)
{m_cap.open(url);
}OpencvCap::~OpencvCap()
{m_cap.release();
}void OpencvCap::run()
{if(!m_cap.isOpened()){qDebug("cannot open the videocapture\n");return ;}Mat current_frame;while(true){m_cap >> current_frame;if(current_frame.empty()){qDebug("frame empty\n");return ;}put_frame(current_frame);waitKey(20);}
}void OpencvCap::put_frame(Mat frame)
{m_mutex.lock();// 这边采用的更简单粗暴的清理方式,可以根据实际情况自定义清理方式if(m_vec_frame.size() >5)m_vec_frame.clear();//存入容器m_vec_frame.push_back(frame);m_mutex.unlock();return;
}bool OpencvCap::get_frame(Mat &frame)
{m_mutex.lock();if(m_vec_frame.size() < 1)return false;else{//从容器中取图像frame = m_vec_frame.back();}m_mutex.unlock();return true;
}

main
实际上,这部分是分散开来的,集中起来只是方便理解

int main()
{//创建对象,初始化OpencvCap *m_opencvcap;m_opencvcap = new OpencvCap("rtsp://admin:abc123456@192.168.1.64/h264/ch1/main/av_stream");//开始线程m_opencvcap->start();Mat frame;while(true){bool ret = m_opencvcap->get_frame(frame);if(ret == false || frame.empty())return 0;//处理图像······imshow("windows",frame);}
}

opencv VideoCapture抓取RTSP高延迟,崩溃解决方法相关推荐

  1. ffmpeg抓取rtsp流并保存_详细解析RTSP框架和数据包分析(1)

    0.引言 本文主要讲解RTSP框架和抓取RTSP数据包,进行详细分析.可以阅读以下几篇文章,能够帮助你更详细理解. 手把手搭建RTSP流媒体服务器 HLS实战之Wireshark抓包分析 HTTP实战 ...

  2. 小白用Python抓取豆瓣高评分喜剧电影

    目的:抓取豆瓣高评分喜剧电影 导入所需的库 import requests#进行模拟浏览器进行发送请求 import json#导入JSON类型的库 不会导入库的话,请参考我的上一篇文章,上面有提及. ...

  3. Ubuntu14.04配置pylon及Opencv并抓取图像显示

    Ubuntu14.04配置pylon及Opencv并抓取图像显示 文章目录 Ubuntu14.04配置pylon及Opencv并抓取图像显示 软件工具 安装Opencv 配置pkg-config 配置 ...

  4. cutycapt php,PHP利用CutyCapt获取网页快照,抓取网页高清图片快照(教程)

    PHP利用CutyCapt获取网页快照,抓取网页高清图片快照(教程): // +------------------------------------------------------------ ...

  5. 系统检测到您正在使用网页抓取工具访问_从网站抓取数据的3种最佳方法

    halo,大家好,我是特仑苏,今天呢给大家分享一些Python从网站抓取数据的一些方法,希望可以给大家带来一些帮助! 原作者:Octoparse团队 原出处:作品文(从网站抓取数据的3种最佳方法)/网 ...

  6. 用requests获取网页源代码 python-Python3使用requests包抓取并保存网页源码的方法

    本文实例讲述了Python3使用requests包抓取并保存网页源码的方法.分享给大家供大家参考,具体如下: 使用Python 3的requests模块抓取网页源码并保存到文件示例: import r ...

  7. python可抓取数据包括什么_Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓...

    Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用pyt ...

  8. python抓取网页内容到excel_Python实现抓取网页生成Excel文件的方法示例

    本文实例讲述了Python实现抓取网页生成Excel文件的方法.分享给大家供大家参考,具体如下: Python抓网页,主要用到了PyQuery,这个跟jQuery用法一样,超级给力 示例代码如下: # ...

  9. python爬取新闻网站内容findall函数_Python正则抓取新闻标题和链接的方法示例

    本文实例讲述了Python正则抓取新闻标题和链接的方法.分享给大家供大家参考,具体如下: #-*-coding:utf-8-*- import re from urllib import urlret ...

最新文章

  1. Atitit.java jna  调用c  c++ dll的原理与实践  总结  v2  q27
  2. JEECMS站群管理系统-- Jeecms项目导入myeclipse
  3. 汇编语言 把最大值放入max 把最小值放入min_Excel的MAX和MIN,如何用白话弄懂?...
  4. PHP程序员突破成长瓶颈
  5. iar代码优化影响运行速度吗_IAR中优化等级对Kinetis FGPIO执行速度的影响
  6. Keras-数据准备
  7. decimal转为string sql_PHP+Mysql防止SQL注入的方法
  8. 与网络计算机相比,和通信网络相比,计算机网络最本质的功能是什么
  9. C语言——九九乘法表
  10. 三菱FX系列PLC以太网连接组态王软件
  11. 信用卡业务愈卷愈烈,银行机构如何突围?
  12. JVM性能调优(一)(JVM参数详解、内存分析等)
  13. GF系列卫星分辨率介绍
  14. Entrust - Laravel 用户权限系统解决方案 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub...
  15. centos系统使用pptpd搭建在windows客户端的vpn服务器
  16. 第四届中国(广东)国际“互联网+”博览会今日在佛山开幕 聚集工业“智慧”推动产业加速转型...
  17. 前面的可以显示位置国旗,后面的可显示地区和线路
  18. sklearn.metrics 用法详解
  19. 解决打开管家婆软件报表慢的问题
  20. 数据库课程设计——滴滴打车系统

热门文章

  1. 新书介绍 | Edge AI: Convergence of Edge Computing and AI
  2. 本地怎么连接服务器的mysql_本地如何连接到服务器上的MySQL
  3. arcgis for android(五)加载天地图
  4. 山穷水尽疑无路,柳暗花明又一村
  5. python爬虫实践-02-大众点评评论爬取-破解CSS字体加密
  6. 河南中医药大学计算机科学与技术,我校信息技术学院成功举办“隐结构及其在中医药研究的应用暨计算机科学与技术学科建设”学术论坛...
  7. 获取3个月前的日期(年月日)
  8. 设计模式●观察者模式
  9. 巴比特 | 元宇宙每日必读:5年内元宇宙相关产业规模突破800亿元!合肥高新区发布元宇宙产业发展规划...
  10. 【软件工程】用户界面设计