OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

K-最近邻(K-nearest neighbours, KNN)基于的背景/前景分割算法。

该类实现了如 319中所述的 K-最近邻背景减除。如果前景像素的数量很少,则非常高效、

cv::BackgroundSubtractorKNN 是 OpenCV 中用于背景减除的一种具体实现,它是 cv::BackgroundSubtractor 基类的一个派生类。该类使用 K 最近邻(K-Nearest Neighbors, KNN)算法来检测前景物体。KNN 方法在背景建模方面具有较好的性能,特别是在处理光照变化和动态背景方面。

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

int main( int argc, char** argv )
{
    // 创建一个 BackgroundSubtractorKNN 对象
    cv::Ptr< cv::BackgroundSubtractor > pBackSub = cv::createBackgroundSubtractorKNN();

    // 设置参数
  

    // 打开视频文件
    cv::VideoCapture capture( 0 );
    if ( !capture.isOpened() )
    {
        std::cerr << "Failed to open video file." << std::endl;
        return -1;
    }

    // 读取每一帧并处理
    cv::Mat frame, fgMask;
    while ( capture.read( frame ) )
    {
        // 应用背景减除
        pBackSub->apply( frame, fgMask );

        // 显示结果
        cv::imshow( "Frame", frame );
        cv::imshow( "FG Mask", fgMask );

        // 按 'q' 键退出
        if ( cv::waitKey( 30 ) == 'q' )
        {
            break;
        }
    }

    // 释放资源
    capture.release();
    cv::destroyAllWindows();

    return 0;
}

运行结果

相关推荐
阿维的博客日记17 分钟前
什么是TDD for AI,详细讲一下
人工智能·tdd
飞Link18 分钟前
从“聊天”到“做事”:2026 年 Agentic AI(代理式人工智能)开发者指南
人工智能
Dshuishui20 分钟前
我用 Claude Code 做了一个学术论文搜索工具
开发语言·人工智能·python·pip·uv
IT 行者21 分钟前
Spring AI 2.0.0-M5 发布:全面转向 OpenAI Java SDK
java·人工智能·spring
博云技术社区28 分钟前
创新智能体 新质生产力——博云发布 BoAgent 智能体平台 以安全可信 Agentic AI 重构企业数字生产力
人工智能
发哥来了28 分钟前
六款开源大模型中文长文本处理能力横向评测
大数据·人工智能·机器学习·ai·开源·aigc
fuquxiaoguang33 分钟前
SSA架构:国产AI推理的“换道超车“,算力消耗降低1000倍
人工智能·架构·ssa
缝艺智研社33 分钟前
YC - 21 平板下摆机:服装下摆工艺的革新利器
人工智能·新人首发·自动化缝纫机·线上模板机·线内模板机
_Evan_Yao35 分钟前
长上下文模型(1M token)会杀死RAG吗?—— 理性分析
人工智能·后端
行走的小派37 分钟前
解读香橙派5系列:RK3588加持,6TOPS NPU边缘计算实践
人工智能·边缘计算