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

运行结果

相关推荐
后端小肥肠1 分钟前
公众号破圈难?我写了个skill把长文拆成IP卡片,小红书小绿书同时发
人工智能·aigc·agent
陈天伟教授6 分钟前
四川省中小学和职业院校教师校长省级培训专家库专家名单
人工智能·安全·架构
Uncle 城7 分钟前
AI日报速递-20260418
人工智能
F_U_N_28 分钟前
拒绝手动配环境!MonkeyCode:手机就能写项目,AI全程扛事
人工智能·ai编程
helloworddm31 分钟前
Vulkan GPU图像处理之对数变换:Kompute框架实战与性能分析
图像处理·人工智能·计算机视觉
旺仔Sec35 分钟前
一万字带您看懂:从“赛项”到“赛道”解读世界职业院校技能大赛改革与备赛策略
人工智能·世界职业院校技能大赛·大赛
海兰36 分钟前
【第2篇-续】从零开始helloworld使用openAI通用模型的完整实现示例附源代码
java·人工智能·spring boot·alibaba·spring ai
科研实践课堂(小绿书)37 分钟前
基于AI智能算法的装备结构可靠性分析与优化设计技术
人工智能·机器学习
蕤葳-44 分钟前
理性分析:如何利用考证作为抓手,构建系统化知识体系与职业规划?
人工智能·网络协议·https
秋91 小时前
学霸圈公认的 10 种高效学习习惯:从低效到顶尖的底层逻辑
人工智能·学习·算法