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

    文章

    611

    浏览量

    40789
  • MOGPON
    +关注

    关注

    0

    文章

    2

    浏览量

    5701
  • printf函数
    +关注

    关注

    0

    文章

    30

    浏览量

    5827
收藏 人收藏

    评论

    相关推荐

    基于QT+OpenCv的目标跟踪算法实现

    目标跟踪算法作为一种有着非常广泛的应用的算法,在航空航天、智能交通、智能设备等领域有着非常广泛的应用。本系列博客将教大家在410c开发板上基于linux操作系统环境,采用QT+Opencv实现
    发表于 09-21 10:42

    OpenCV自带组件HighGUI怎么使用?

    将介绍OpenCV自带组件HighGUI的简单使用。当我们在测试算法,查看算法效果的时候,需要用到可视化,动态调参的界面,也可能需要监听鼠标,键盘等的动作,这时,HighGUI就发挥大作用了,HighGUI作为OpenCV的图
    发表于 11-05 06:54

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

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

    LabVIEW+Python+openCV

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

    怎样去生成能在Qt应用的opencv库呢

    请问如何生成适用于arm版的opencv,能在Qt应用。(想在Qt开发opencv相关的功能,需要调用opencv库,我用别的交叉工具链
    发表于 12-30 06:58

    如何使用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 3668次阅读

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

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

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

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

    使用Numpy和OpenCV实现傅里叶和逆傅里叶变换

      文章从实际出发,讲述了什么是傅里叶变换,它的理论基础以及Numpy和OpenCV实现傅里叶和逆傅里叶变换,并最终用高通滤波和低通滤波的示例。
    的头像 发表于 07-05 16:04 1256次阅读

    通过Opencv+Openpose实现体姿态检测

    通过一个偶然机会,我了解到了人体姿态解算,在学习K210之余,我便想着通过opencv实现这个功能,查找了很多资料,发现可以利用opencv+openpose实现,接着我又开始找一些资
    的头像 发表于 05-22 10:44 787次阅读
    通过<b class='flag-5'>Opencv</b>+Openpose<b class='flag-5'>实现</b>体姿态检测

    如何基于计算机视觉实现道路交通计数

      今天,我们将一起探讨如何基于计算机视觉实现道路交通计数。 在本教程中,我们将仅使用Python和OpenCV,并借助背景减除算法非常简单地进行运动检测。 我们将从以下四个方面进行介
    的头像 发表于 06-12 09:43 300次阅读
    如何基于计算机视觉<b class='flag-5'>实现</b>道路交通计数

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

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