返回顶部
首页 > 资讯 > 后端开发 > Python >python  OpenCV怎么使用背景分离方法
  • 246
分享到

python  OpenCV怎么使用背景分离方法

PythonOpenCV 2023-05-16 20:05:48 246人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

理论背景分离(BS)是一种通过使用静态相机来生成前景掩码(包含属于场景中的移动对象像素的二进制图像)的常用技术顾名思义,BS计算前景掩码,在当前帧与背景模型之间执行减法运算,其中包含场景的静态部分,考虑到所观察场景的特征,可以将其视为背景的

理论

  • 背景分离(BS)是一种通过使用静态相机来生成前景掩码(包含属于场景中的移动对象像素的二进制图像)的常用技术

  • 顾名思义,BS计算前景掩码,在当前帧与背景模型之间执行减法运算,其中包含场景的静态部分,考虑到所观察场景的特征,可以将其视为背景的所有内容。

  • 背景建模包括两个主要步骤:

    • 1.背景初始化

    • 2.背景更新 第一步,计算背景的初始模型,在第二步中,更新模型以适应场景中可能的变化

实现

让用户选择处理视频文件或图像序列。在此示例中,将使用cv2.BackgroundSubtractORMOG2 生成前景掩码。

from __future__ import print_function
import cv2
import argparse
parser = argparse.ArgumentParser(
            description='This program shows how to use background subtraction methods provided by OpenCV. You can process both videos and images.')
parser.add_argument('--input', type=str, help='Path to a video or a sequence of image.', default='vtest.avi')
parser.add_argument('--alGo', type=str, help='Background subtraction method (KNN, MOG2).', default='MOG2')
args = parser.parse_args()
## [create]
# create Background Subtractor objects
if args.algo == 'MOG2':
    backSub = cv2.createBackgroundSubtractorMOG2()
else:
    backSub = cv2.createBackgroundSubtractorKNN()
## [create]
## [capture]
capture = cv2.VideoCapture(args.input)
if not capture.isOpened():
    print('Unable to open: ' + args.input)
    exit(0)
## [capture]
while True:
    ret, frame = capture.read()
    if frame is None:
        break
    ## [apply]
    # update the background model
    fgMask = backSub.apply(frame)
    ## [apply]
    ## [display_frame_number]
    # get the frame number and write it on the current frame
    cv2.rectangle(frame, (10, 2), (100,20), (255,255,255), -1)
    cv2.putText(frame, str(capture.get(cv2.CAP_PROP_POS_FRAMES)), (15, 15),
               cv2.FONT_HERSHEY_SIMPLEX, 0.5 , (0,0,0))
    ## [display_frame_number]
    ## [show]
    # show the current frame and the fg masks
    cv2.imshow('Frame', frame)
    cv2.imshow('FG Mask', fgMask)
    ## [show]
    keyboard = cv2.waiTKEy(30)
    if keyboard == 'q' or keyboard == 27:
        break

代码分析

分析上面代码的主要部分:

  • cv2.BackgroundSubtractor对象将用于生成前景掩码。在此示例中,使用了默认参数,但是也可以在create函数中声明特定的参数。

# create Background Subtractor objects  KNN or MOG2
if args.algo == 'MOG2':
    backSub = cv2.createBackgroundSubtractorMOG2()
else:
    backSub = cv2.createBackgroundSubtractorKNN()
  • cv2.VideoCapture对象用于读取输入视频或输入图像序列

capture = cv2.VideoCapture(args.input)
if not capture.isOpened:
    print('Unable to open: ' + args.input)
    exit(0)
  • 每帧都用于计算前景掩码和更新背景。如果要更改用于更新背景模型的学习率,可以通过将参数传递给apply方法来设置特定的学习率

# update the background model
    fgMask = backSub.apply(frame)
  • 当前帧编号可以从cv2.Videocapture对象中提取,并在当前帧的左上角冲压。使用白色矩形来突出显示黑色框架

 # get the frame number and write it on the current frame
    cv2.rectangle(frame, (10, 2), (100,20), (255,255,255), -1)
    cv2.putText(frame, str(capture.get(cv2.CAP_PROP_POS_FRAMES)), (15, 15),
               cv2.FONT_HERSHEY_SIMPLEX, 0.5 , (0,0,0))
  • 显示当前的输入帧和结果

# show the current frame and the fg masks
    cv2.imshow('Frame', frame)
    cv2.imshow('FG Mask', fgMask)

以上就是python  OpenCV怎么使用背景分离方法的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: python  OpenCV怎么使用背景分离方法

本文链接: https://lsjlt.com/news/210570.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python  OpenCV怎么使用背景分离方法
    理论背景分离(BS)是一种通过使用静态相机来生成前景掩码(包含属于场景中的移动对象像素的二进制图像)的常用技术顾名思义,BS计算前景掩码,在当前帧与背景模型之间执行减法运算,其中包含场景的静态部分,考虑到所观察场景的特征,可以将其视为背景的...
    99+
    2023-05-16
    Python OpenCV
  • 详解python  OpenCV如何使用背景分离方法
    目录目标理论实现代码分析结果目标 在本章中,将学习: 背景分离(Background Subtraction)OpenCv函数cv2.VideoCapture, cv2.Backgr...
    99+
    2023-05-17
    python OpenCV背景分离 python OpenCV
  • Python抠图:使用OpenCV实现背景去除
    一、了解抠图和OpenCV库 抠图(Matting)是图像处理领域的重要任务之一,旨在将对象与其它部分分离。OpenCV是一个开源计算机视觉库,它提供了丰富的函数和工具进行图像编辑处理,可以简单而快速地实现抠图功能,同时可以进行更多的图像处...
    99+
    2023-09-28
    python opencv 开发语言
  • Java OpenCV中怎么用KNN算法实现图像背景移除
    这篇文章主要讲解了“Java OpenCV中怎么用KNN算法实现图像背景移除”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java OpenCV中怎么用KNN算法实现图像...
    99+
    2023-06-29
  • css怎么使用磨砂背景
    这篇文章主要介绍“css怎么使用磨砂背景”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css怎么使用磨砂背景”文章能帮助大家解决问题。代码实现<!DOCTYPE html>&l...
    99+
    2023-06-27
  • CSS背景background和background-position的使用方法
    这篇文章主要介绍“CSS背景background和background-position的使用方法”,在日常操作中,相信很多人在CSS背景background和background-position的使用方...
    99+
    2024-04-02
  • 使用PyCharm调整背景颜色的方法
    如何利用PyCharm调整背景颜色,需要具体代码示例 导言: PyCharm是一种功能强大的Python集成开发环境(IDE),它提供了许多方便的功能来提高开发人员的效率。其中之一就是可以调整编辑器的背景颜色。本文将介绍如何使用...
    99+
    2024-02-02
    pycharm 调整 背景色 python程序
  • 怎么更改pycharm背景图片_更改pycharm背景图片的方法
    首先打开pycharm,找到file。 打开找到settings。 找得到右侧的appearance&behavior。 打开找到appearance。 然后找到右侧bac...
    99+
    2024-05-10
    pycharm
  • 怎么用Python脚本更改Windows背景
    本篇内容介绍了“怎么用Python脚本更改Windows背景”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在我们开始之前,一定要注意这篇文章...
    99+
    2023-06-15
  • React之Suspense提出的背景及使用方法是什么
    本篇内容主要讲解“React之Suspense提出的背景及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React之Suspense提出的背景及使用方法是什么”吧!Suspense...
    99+
    2023-07-05
  • 怎么使用DIV背景透明样式
    这篇文章主要讲解了“怎么使用DIV背景透明样式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用DIV背景透明样式”吧!DIV背景透明样式代码:.ale...
    99+
    2024-04-02
  • 使用CSS怎么实现前景背景自动配色
    本篇文章给大家分享的是有关使用CSS怎么实现前景背景自动配色,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、颜色匹配效果预览如下GIF示意,当我们按钮背景色逐渐变淡的时候,文...
    99+
    2023-06-08
  • Python使用背景差分器实现运动物体检测
    目录前言一、基本背景差分器二、MOG背景差分器流程代码编写三、KNN背景差分器前言 目前,许多运动检测技术都是基于简单的背景差分概念的,即假设摄像头(视频)的曝光和场景中的光照条件是...
    99+
    2024-04-02
  • CSS多重背景数据块怎么使用
    CSS多重背景数据块可以通过background属性来实现。具体操作如下:1. 使用background属性设置多个背景数据块。每个...
    99+
    2023-10-12
    CSS
  • python中怎么使用opencv实现阈值分割
    在Python中使用OpenCV实现阈值分割可以按照以下步骤进行:1. 导入OpenCV库:```pythonimport cv2`...
    99+
    2023-08-15
    python opencv
  • python opencv旋转图片的使用方法
    目录背景原始图像:opencv函数numpy函数旋转90度参考背景 在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,旋转角度扩充图片是一种常见的...
    99+
    2024-04-02
  • 怎么在Python中使用OpenCV
    这篇文章给大家介绍怎么在Python中使用OpenCV,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。OpenCVOpenCV是计算机视觉中最受欢迎的库,最初由intel使用C和C ++进行开发的,现在也可以在pytho...
    99+
    2023-06-14
  • 使用OpenCV怎么实现全景图像拼接
    今天就跟大家聊聊有关使用OpenCV怎么实现全景图像拼接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Stitcher.pyimport numpy as&nbs...
    99+
    2023-06-15
  • 怎么使用css让背景图片不重复
    这篇文章主要介绍怎么使用css让背景图片不重复,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更加美化。它也是一种...
    99+
    2023-06-14
  • 怎么使用Python第三方opencv库实现图像分割处理
    这篇文章主要介绍了怎么使用Python第三方opencv库实现图像分割处理的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python第三方opencv库实现图像分割处理文章都会有所收获,下面我们一起来看...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作