上一篇通过opencv2加载实时海康摄像头的视频流,视频可以加载成功,但是会发生错误,提示丢包或者解码错误。

如果打开资源管理器发现,并非解码时候发生错误 ,根本原因是电脑配置有问题,CPU资源耗尽,所以发生解码丢包等错误。

解决办法很简单,通过多线程的方式,把视频抽帧显示放到线程中处理,效果如下

没有考虑线程安全的问题,简单实现代码如下

#include "stdafx.h"
#include "stdafx.h"
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include <opencv2/video/video.hpp>
#include "opencv2/highgui/highgui.hpp"
#include <xstring>
#include <thread>
using namespace std;
using namespace cv;void ShowCam(std::string& url, const std::string& name)
{VideoCapture cap;cap.open(url);//呵呵,就这一句关键Mat Camera_CImg;Mat Camera_GImg;/*cap.set(CV_CAP_PROP_FRAME_HEIGHT, 640);cap.set(CV_CAP_PROP_FRAME_WIDTH, 800);*/if (!cap.isOpened())return ;std::thread t([](VideoCapture cap, std::string name){int iCount(0);while (true){Mat frame, frame1, finalFrame;// Capture frame-by-framecap >> frame;resize(frame, frame, Size(320, 240), 0, 0, INTER_CUBIC);// If the frame is empty, break immediatelyif (frame.empty()) {if (iCount++ < 10){continue;}cout << "Frame is empty" << endl;break;}// Display the resulting frameimshow(name, frame);if (cvWaitKey(30) == 'q')break;}},cap, name);t.detach();
}int _tmain(int argc, _TCHAR* argv[])
{std::string url("rtsp://admin:Admin12345@192.168.1.21:554/h264/ch1/sub/av_stream");ShowCam(url, "first_cam");std::string url2("rtsp://admin:xy123456@192.168.1.152:554/h264/ch1/sub/av_stream");ShowCam(url2, "second_cam");getchar();return 0;
}

以上实现仅供参考。下一步尝试实现视频拼接的效果。

opencv2 加载RTSP视频流,内存溢出的问题相关推荐

  1. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题

    今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...

  2. 图片--Android加载图片导致内存溢出(Out of Memory异常)

    Android在加载大背景图或者大量图片时,经常导致内存溢出(Out of Memory  Error),本文根据我处理这些问题的经历及其它开发者的经验,整理解决方案如下(部分代码及文字出处无法考证) ...

  3. Android加载图片导致内存溢出(Out of Memory异常)

    Android在加载大背景图或者大量图片时,经常导致内存溢出(Out of Memory  Error),本文根据我处理这些问题的经历及其它开发者的经验,整理解决方案如下(部分代码及文字出处无法考证) ...

  4. 在Recyclerview使用GlideAPP加载大量图片导致内存溢出(oom)

    网络上有很多解决的办法,但是都是在清理磁盘缓存和内存上做,并不能及时释放内存. 1.可以在每次请求数据和加载数据后调用 /** * 清除内存缓存. */public static void clear ...

  5. Linux内存申请失败失败会怎样,linux - 转储失败,因为无法加载资产 - 堆栈内存溢出...

    我想在我的.bashrc Ubuntu 18.04上创建别名以构建和安装APK,但是在这样的终端中遇到问题 W/asset (22684): Asset path ./app/build/output ...

  6. Java 类中各成分加载顺序和内存中的存放位置

    一.什么时候会加载类? 使用到类中的内容时加载:有三种情况 1.创建对象:new StaticCode(); 2.使用类中的静态成员:StaticCode.num=9; StaticCode.show ...

  7. SpringMvc 系统启动时加载数据到内存中

    SpringMvc 系统启动时加载数据到内存中 学习了:http://blog.csdn.net/newstruts/article/details/18668269 https://www.cnbl ...

  8. as3 Loader 加载资源后内存泄露无法释放的问题。

    as3 Loader 加载资源后内存泄露无法释放的问题. 本人用Loader加载外部一个swf.之后unloadAndStop,Flash概要分析发现,内存没有被释放. 网上搜了一大堆文章,要么就是加 ...

  9. [搬运工]移动游戏加载性能和内存管理全解析

    UWA 六月直播季 | 6.8 移动游戏加载性能和内存管理全解析 https://blog.uwa4d.com/archives/livebroadcast6-8.html 因为这篇文章没有提供PPT ...

最新文章

  1. 交管12123显示当前环境存在风险_政策|取消驾驶证年龄上限、推行异地通办,12项交管新政来了...
  2. Hiredis库的简单使用
  3. R语言:时间序列常用函数
  4. c语言实现堆Stack(附完整源码)
  5. 经典面试题:如何保证缓存与数据库的双写一致性?
  6. java abstract类和abstract方法
  7. 罗永浩宣布要做带货一哥后,合作单子如雪花般飞来
  8. iPod Touch也将支持运行Android系统
  9. python怎么导入数据集keras_python – 如何为Keras准备数据集?
  10. Herev Falciani推出新的加密货币和区块链项目
  11. 使用差分金字塔提取图像边缘 python实现
  12. 如何在Debian下快速安装中文字体
  13. C# 屏蔽windows功能键
  14. JavaScript开发心得--如何传递某行数据给下一页
  15. 影视后期调色必要性以及操作理论
  16. 表白生日祝福和3D表白相册
  17. Monaco-Editor 多人协作 编辑器
  18. qt base64加解密
  19. 2012年计算机工作总结,计算机教师工作总结2011-2012
  20. LCMs (莫比乌斯反演)

热门文章

  1. 代码:骨骼提取,原图匹配,Matlab
  2. 西安电子科大计算机学院院长,董伟生 | 个人信息 | 西安电子科技大学个人主页...
  3. win10计算机拨号连接,Win10设置电脑开机自动连接宽带的方法
  4. Linux系统可以显示文件名,Linux系统如何显示中文目录和文件名
  5. java中国象棋网络对弈_基于JAVA的中国象棋对弈系统(附答辩记录)
  6. 金刚菩提子开裂自动修复此计算机,金刚菩提子裂了怎么办 教你这些修复方法...
  7. cocos2dx layer理解
  8. Dedecms 火车采集器免登陆发布接口,自动生成上下篇、栏目页、首页
  9. photoshop旋转图片
  10. 如何利用python计算即期利率_PYTHON计算任务收益率