VPI - 视觉编程接口

3.2 版本

背景减除器

从视频中分离前景和背景。更多...

数据结构

struct  VPIBackgroundSubtractorParams
 定义 vpiCreateBackgroundSubtractor 参数的结构体。更多...
 

函数

VPIStatus vpiInitBackgroundSubtractorParams (VPIBackgroundSubtractorParams *params)
 使用默认值初始化 VPIBackgroundSubtractorParams更多...
 
VPIStatus vpiCreateBackgroundSubtractor (uint64_t backends, int32_t imageWidth, int32_t imageHeight, VPIImageFormat inputFormat, VPIPayload *payload)
 vpiSubmitBackgroundSubtractor 创建负载 (payload)。更多...
 
VPIStatus vpiSubmitBackgroundSubtractor (VPIStream stream, uint64_t backend, VPIPayload payload, VPIImage inFrame, VPIImage outFGMask, VPIImage outBGImage, const VPIBackgroundSubtractorParams *params)
 向流 (stream) 提交 背景减除器 操作。更多...
 

详细描述

从视频中分离前景和背景。

有关更多详细信息和使用示例,请参阅 背景减除器


数据结构文档

◆ VPIBackgroundSubtractorParams

struct VPIBackgroundSubtractorParams

定义 vpiCreateBackgroundSubtractor 参数的结构体。

定义于文件 BackgroundSubtractor.h 的第 82 行。

+ VPIBackgroundSubtractorParams 的协作图
数据字段
float varThreshold 像素与模型之间平方马氏距离的阈值,用于决定像素是否能被背景模型充分描述。

此参数不影响背景更新。

uint8_t detectShadow 如果设置为非零值,算法将检测阴影并标记它们。
uint8_t shadowPixelValue 表示阴影的像素值。
float learningRate 学习率,指示背景模型学习的速度。
  • 此值必须介于 0 和 1 之间。
    • 最小值为 0 表示根本不更新背景模型
    • 最大值为 1 表示从最后一帧完全重新初始化背景模型。

函数文档

◆ vpiInitBackgroundSubtractorParams()

VPIStatus vpiInitBackgroundSubtractorParams ( VPIBackgroundSubtractorParams params)

#include <vpi/algo/BackgroundSubtractor.h>

使用默认值初始化 VPIBackgroundSubtractorParams

默认值

  • varThreshold: 16
  • detectShadow: 1
  • shadowPixelValue: 127
  • learningRate: 0.001
参数
[out]params要填充默认值的结构体。
返回值
VPI_ERROR_INVALID_ARGUMENTparams 为 NULL
VPI_SUCCESS操作成功执行。

◆ vpiCreateBackgroundSubtractor()

VPIStatus vpiCreateBackgroundSubtractor ( uint64_t  backends,
int32_t  imageWidth,
int32_t  imageHeight,
VPIImageFormat  inputFormat,
VPIPayload payload 
)

#include <vpi/algo/BackgroundSubtractor.h>

vpiSubmitBackgroundSubtractor 创建负载 (payload)。

参数
[in]backends将执行算法的 VPI 后端。
[in]imageWidth, imageHeight输入图像尺寸。
  • 必须 > 0。
[in]inputFormat输入图像格式。
[out]payload指向接收已创建句柄的负载变量的指针。
返回值
VPI_ERROR_INVALID_ARGUMENTpayload 为 NULL。
VPI_ERROR_INVALID_ARGUMENTimageWidthimageHeight 超出有效范围。
VPI_ERROR_INVALID_ARGUMENTbackend 指的是无效的后端。
VPI_IMAGE_FORMAT_INVALID不支持 inputFormat
VPI_ERROR_NOT_IMPLEMENTED给定后端不支持背景减除器算法。
VPI_ERROR_INVALID_CONTEXT当前上下文已销毁。
VPI_ERROR_INVALID_OPERATION后端未在当前上下文中启用。
VPI_ERROR_OUT_OF_MEMORY无法分配所需资源。
VPI_SUCCESS操作成功执行。

◆ vpiSubmitBackgroundSubtractor()

VPIStatus vpiSubmitBackgroundSubtractor ( VPIStream  stream,
uint64_t  backend,
VPIPayload  payload,
VPIImage  inFrame,
VPIImage  outFGMask,
VPIImage  outBGImage,
const VPIBackgroundSubtractorParams params 
)

#include <vpi/algo/BackgroundSubtractor.h>

向流 (stream) 提交 背景减除器 操作。

对来自视频的传入图像运行背景减除器,并输出前景掩码的估计值。

参数
[in]stream将在其中排队操作的流 (stream)。
  • 不得为 NULL。
  • 流 (stream) 必须已启用将执行算法的后端。
[in]backend将执行算法的后端。
  • 必须是在负载创建期间指定的后端,或 0 作为使用此后端的简写。
[in]payload要与其他参数一起提交的负载 (payload)。
[in]inFrame来自视频的传入帧。
  • 不得为 NULL。
  • 必须具有与负载创建期间指定的尺寸相同的尺寸。
  • 图像必须已启用将执行算法的后端。
[out]outFGMask输出前景掩码,为 8 位二进制图像。
  • 不得为 NULL。
  • 必须具有与输入图像相同的尺寸。
  • 唯一接受的格式是 VPI_IMAGE_FORMAT_U8
  • 图像必须已启用将执行算法的后端。
[out]outBGImage背景图像。如果不需要,则传递 NULL。
  • 必须具有与输入图像相同的格式和尺寸。
  • 图像必须已启用将执行算法的后端。
[in]params算法控制参数。传递 NULL 以使用 vpiInitBackgroundSubtractorParams 给出的默认值。
返回值
VPI_ERROR_INVALID_ARGUMENTstream 为 NULL。
VPI_ERROR_INVALID_ARGUMENTparams 为 NULL。
VPI_ERROR_INVALID_ARGUMENTinFrameoutFGMask 为 NULL。
VPI_ERROR_INVALID_ARGUMENTpayload 不是由 vpiCreateBackgroundSubtractor 创建的。
VPI_ERROR_INVALID_ARGUMENTinFrame 图像尺寸与 payload 关联的尺寸不匹配。
VPI_ERROR_INVALID_ARGUMENToutFGMask 尺寸与 payload 关联的尺寸不匹配。
VPI_ERROR_INVALID_ARGUMENTparams 中的学习率超出有效范围。
VPI_ERROR_INVALID_IMAGE_FORMATinFrame 图像格式与 payload 关联的格式不匹配。
VPI_ERROR_INVALID_IMAGE_FORMAT不支持 outFGMask 格式。
VPI_ERROR_INVALID_IMAGE_FORMAToutBGImage 格式与 payload 关联的格式不匹配。
VPI_ERROR_INVALID_ARGUMENTpayload 无效。
VPI_ERROR_INVALID_OPERATION所需的后端未在 streaminFrameoutFGMaskoutBGImage 中启用。
VPI_SUCCESS操作成功执行。