0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenCV中背景减除的设计实现

冬至子 来源:技术铺子 作者:chasenzhang 2023-01-18 15:15 次阅读

介绍

背景减除,官网是这样介绍的。

背景减法(BS)是通过使用静态相机来生成前景蒙版(即,包含属于场景中的运动对象的像素的二进制图像)的通用且广泛使用的技术。

顾名思义,BS计算前景蒙版,在当前帧和背景模型之间执行减法运算,其中包含场景的静态部分,或者更一般而言,考虑到所观察场景的特征,可以视为背景的所有内容。

其实不难理解,我们建立了背景模型,那么前景就很容易分离出来了。当然,这个方法使用场景一般上是静态的背景场景。

后台建模包括两个主要步骤,后台初始化和后台更新,背景减除在OpenCV中的是cv::BackgroundSubtractor类,下面是例子:

官方例子

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace cv;
using namespace std;
const char* params
    = "{ help h         |           | Print usage }"
      "{ input          | vtest.avi | Path to a video or a sequence of image }"
      "{ algo           | MOG2      | Background subtraction method (KNN, MOG2) }";
int main(int argc, char* argv[])
{
    CommandLineParser parser(argc, argv, params);
    parser.about( "This program shows how to use background subtraction methods provided by "
                  " OpenCV. You can process both videos and images.\\n" );
    if (parser.has("help"))
    {
        //print help information
        parser.printMessage();
    }
    //create Background Subtractor objects
    Ptr

截图:

2.jpg

简单分析

PtrpBackSub,创建背景减除的对象,然后createBackgroundSubtractorMOG2()或createBackgroundSubtractorKNN()用来选择更新背景的算法,MOG2或者KNN。然后pBackSub->apply(frame, fgMask);用来更新背景模型。

总的来说用起来是比较煎简单的。其实背景减除最简单的实现,可以直接用当前帧减去前一帧的图像作为背景,这个办法最简单粗暴。优化的话,我们就得对所有的帧差进行建模,用来得到最优的背景模型。

审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenCV
    +关注

    关注

    29

    文章

    626

    浏览量

    41247
  • MOGPON
    +关注

    关注

    0

    文章

    2

    浏览量

    5725
  • printf函数
    +关注

    关注

    0

    文章

    31

    浏览量

    5880
收藏 人收藏

    评论

    相关推荐

    Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程

    作者:Harvest Guo来源:Xilinx DSP Specilist 本文通过对OpenCV图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS调用OpenCV
    发表于 04-23 11:32 5850次阅读
    Vivado设计流程分析 Vivado HLS<b class='flag-5'>实现</b><b class='flag-5'>OpenCV</b>的开发流程

    Vivado HLS实现OpenCV图像处理的设计流程与分析

    本文通过对OpenCV图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS调用OpenCV库函数实现图像处理的几个基本步骤
    发表于 07-08 08:30

    LabVIEW+Python+openCV

    的,动态链接库也需要配置,还需要知道各个参数含义和类型,这里提供另外一种方法,那就是Python的openCV工具包,绝对开源和免费,LabVIEW可以利用Python节点调用Python的openCV工具包同样实现视觉任务和复
    发表于 12-07 20:59

    如何使用PythonOpenCV模块检测颜色

    在这篇文章,我们将看到如何使用 Python OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块。pip install opencv-pythonpip
    发表于 02-09 16:31

    OpenCV的BGR格式,在libyuv对应的那个格式?OpenCV的RGB格式呢?

    OpenCV的BGR格式,在libyuv对应的那个格式?OpenCV的RGB格式呢?
    发表于 09-19 06:00

    一种基于背景减除与三帧差分的运动目标检测算法

    本文提出一种基于背景减除法和三帧差分法来进行运动目标检测的算法。首先运用Surendra 背景更新算法建立运动区域的背景模型,通过背景
    发表于 06-06 16:04 62次下载

    在Vivado如何实现OpenCV设计

    观看视频,了解OpenCV库和其在一些典型应用的使用,以及Zynq-7000 SoC的优点和如何实现OpenCV设计。同时您还能学习到如何在设计流程中使用HLS和视频库文件。本教程将
    的头像 发表于 11-20 06:46 3904次阅读

    OpenCV的混合高斯背景模型源码程序免费下载

    本文档的主要内容详细介绍的使用OpenCV的混合高斯背景模型源码程序免费下载
    发表于 10-18 11:55 5次下载

    如何实现复杂背景的快速人脸识别技术研究

    对复杂背景下的人脸图像,提出一种快速人脸检测识别方法。包括基于肤色模型和OpenCV的综合方法进行人脸检测定位,并对图像重新保存、预处理,用以克服光照因素的干扰,剔除复杂背景对人脸识别不利因素
    发表于 12-06 15:36 14次下载
    如何<b class='flag-5'>实现</b>复杂<b class='flag-5'>背景</b><b class='flag-5'>中</b>的快速人脸识别技术研究

    复杂背景下缺陷检测将Halcon实现转为OpenCV的实例

    导读 本文主要介绍一个复杂背景下缺陷检测的实例,并将Halcon实现转为OpenCV。 实例来源 实例来源于51Halcon论坛的讨论贴: https://www.51halcon.com
    的头像 发表于 06-30 14:05 4374次阅读

    OpenCV的Python实现

    类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言
    的头像 发表于 08-25 15:55 2052次阅读

    OpenCV Webinar 2丨如何在OpenCV调用Tengine推理,实现开发效率翻倍

    这个月,OPEN AI LAB的合作伙伴OpenCV 20岁了!值此之际,OpenCV中国团队推出系列OpenCV Webinar,在全球范围内定期邀请OpenCV专家来作...
    发表于 01-26 19:48 3次下载
    <b class='flag-5'>OpenCV</b> Webinar 2丨如何在<b class='flag-5'>OpenCV</b><b class='flag-5'>中</b>调用Tengine推理,<b class='flag-5'>实现</b>开发效率翻倍

    如何在OpenCV实现CUDA加速

    OpenCV4.x关于CUDA加速的内容主要有两个部分,第一部分是之前OpenCV支持的图像处理与对象检测传统算法的CUDA加速;第二部分是OpenCV4.2版本之后开始支持的针对深
    的头像 发表于 09-05 10:03 5006次阅读

    手把手教你使用LabVIEW OpenCV DNN实现手写数字识别(含源码)

    在LabVIEW如何使用OpenCV DNN模块实现手写数字识别
    的头像 发表于 03-08 16:10 1654次阅读

    基于OpenVINO+OpenCV的OCR处理流程化实现

    预处理主要是基于OpenCV、场景文字检测与识别基于OpenVINO框架 + PaddleOCR模型完成。直接按图索骥即可得到最终结果。 OpenCV预处理主要是完成偏斜矫正、背景矫正等操作,然后使用场景文字检测模型+OCR识别
    的头像 发表于 11-07 11:21 713次阅读
    基于OpenVINO+<b class='flag-5'>OpenCV</b>的OCR处理流程化<b class='flag-5'>实现</b>