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;
}

运行结果

相关推荐
Tezign_space11 小时前
小红书内容运营工具怎么选?专业视角拆解优质工具核心标准
大数据·人工智能·内容运营
老马啸西风12 小时前
成熟企业级技术平台 MVE-010-跳板机 / 堡垒机(Jump Server / Bastion Host)
人工智能·深度学习·算法·职场和发展
康实训12 小时前
养老实训室建设标准指南
大数据·人工智能·实训室·养老实训室·实训室建设
袖手蹲12 小时前
Arduino UNO Q 烘托圣诞节气氛
人工智能·单片机·嵌入式硬件
wjykp12 小时前
part 3神经网络的学习
人工智能·神经网络·学习
core51212 小时前
【硬核测评】Gemini 3 编程能力全面进化:不仅仅是 Copilot,更是你的 AI 架构师
人工智能·编程·copilot
jieshenai12 小时前
llamafactory SFT 从断点恢复训练
人工智能
微风企12 小时前
杭州上城区CID青年企业家创新学院启航!微风企助力AI建设与青年创业成长
人工智能
chataipaper00212 小时前
10款免费降ai率工具合集,轻松搞定论文降AIGC!【2025学姐亲测】
人工智能·深度学习·aigc·降ai·论文ai率
一见已难忘12 小时前
昇腾加持下的Llama 3.2:开源大模型推理性能1B英文原版与3B中文微调模型实测对比
人工智能·开源·llama·gitcode·昇腾