博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用opencv进行多路视频的播放
阅读量:4226 次
发布时间:2019-05-26

本文共 1149 字,大约阅读时间需要 3 分钟。

在监控领域,我们时常需要对多路视频进行实时的播放,这到底是怎么实现的呢?使用opencv的朋友可能会想:我可以先定义一个VideoCapture的数组,然后在一个for循环中,逐一读取各路视频并显示,但是这显然不是同步的,设想一下,如果有32路视频需要同时播放,而一般摄像机的帧率为25fps或30fps,那么按上述方法进行播放,第一路与第三十二路视频的延迟会有1秒多,如果我们需要在其间做一些图像处理,那么延迟将会更大。

有过多线程编程或多核编程经验的朋友会觉得这个问题很好解决,这就是一个简单的并行问题。本章节提供使用openMP多核编程的方法实现多路视频的播放:

#include "stdafx.h"#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "omp.h"using namespace cv;using namespace std;#define CAM_NUM 4int _tmain(int argc, _TCHAR* argv[]){	VideoCapture cap[CAM_NUM];	Mat img;	string str = "scene_1//frame_%4d.jpg";	int i;	#pragma omp parallel for 	for (i=0;i
> img; resize(img,temp,Size(min_width,min_height)); left = i/2 *min_width; top = i%2 *min_height; temp.copyTo(imageShow(Rect(left,top,min_width,min_height))); } if (!runflag) { break; } namedWindow("Image"); imshow("Image", imageShow); waitKey(33); } return 0;}


 
一张截图如下:

是不是很有意思!你可以尝试修改一下视频通道的数量,如果仅是播放,一个核播放4路视频完全没有问题,一个四核的计算机可以尝试16路视频的同步播放。

本文中使用了多核编程的思想,因为现在多核计算机很普遍了,这也必将是以后的趋势,想更多的了解openMP与opencv的结合请继续关注本人博客!!会有大波新内容介绍给大家的!

链接:http://m.blog.csdn.net/blog/dengtaocs/38065955

你可能感兴趣的文章
js获取url参数值的两种方式详解
查看>>
MyEclipse设置默认注释的格式
查看>>
同一服务器部署多个tomcat时的端口号修改详情
查看>>
常用正则表达式集锦
查看>>
Spring定时器的时间表达式
查看>>
主键和唯一索引的区别
查看>>
linux下使用yum安装gcc详解
查看>>
aclocal安装依赖的库
查看>>
ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)解决方案
查看>>
Host 'XXX' is not allowed to connect to this MySQL server解决方案
查看>>
corosync pacemaker 配置高可用集群(一)
查看>>
nginx(一) nginx详解
查看>>
nginx(二) nginx编译安装 及 配置WEB服务
查看>>
nginx(三) nginx配置:反向代理 负载均衡 后端健康检查 缓存
查看>>
jQuery核心--多库共存
查看>>
6 51点亮第一个LED
查看>>
Multisim 14.0 搭建并仿真51单片机最小系统
查看>>
增加windows下Tomcat运行时的内存
查看>>
tomcat群集中session共享的几个方案
查看>>
查找google谷歌北京IP地址的方法
查看>>