首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于OpenCV的实时运动检测

基于OpenCV的实时运动检测
EN

Stack Overflow用户
提问于 2014-06-30 22:42:20
回答 2查看 1.4K关注 0票数 1

我有一个项目,我需要检测视频流中的运动。当检测到运动时,进行进一步的处理。不需要检测检测到运动的区域或更详细的信息。我只需要测量两个图像或类似触发器之间像素变化的百分比,以进行进一步处理。

我的想法是取两张图像的绝对差异,将其阈值并计算像素。我使用cv::absdiff,cv::threshold和cv::countNonZero。对于全高清图像,此计算大约需要10毫秒。在30fps时,这在单个内核上加起来为10 * 30 =300ms。

这还不包括图像的灰度转换,与差异图像计算相比,灰度转换大约需要2-3倍。所以我可以在一个内核上处理大约10fps的全高清图像。

我现在正在寻找一种方法来显著提高灰度转换/运动检测的速度。就计算能力而言,在RGB视频流中进行运动检测的最快方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2014-06-30 23:44:49

如果你完全被限制在一个核心上,这就不适用了。但是,如果您有一个良好的视频卡,您可以使用gpu::或ocl::函数。通过使用这些,你可以将操作速度提高3-30倍!我知道一个事实,gpu::threshold比cpu版本快得多。在geForce gtx660上,我可以在0.001秒内处理一张1080p的图片。在相同大小的图像上我的图形处理时间的进一步例子:掩蔽- .002,LBP分类- .053,形态学.002。

票数 1
EN

Stack Overflow用户

发布于 2014-07-01 02:38:06

  1. 在处理之前缩小图像大小
  2. 在测试前应用模糊,因为这样可以减少噪声。

opencv提供了比较mats的方法,例如,cv::compare重载了relative运算符。

此外,在调试opencv库和发行库之间的速度方面有一个巨大的差异,在这一点上,在你担心速度之前,使用opencv的发行库进行发布编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24492762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档