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

运行结果

相关推荐
音视频牛哥几秒前
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
人工智能·opencv·计算机视觉
SecPulse10 分钟前
AI开源竞赛与硬件革命:2025年3月科技热点全景解读——阿里、腾讯领跑开源,英特尔、台积电重塑算力格局
人工智能·科技·opencv·自然语言处理·开源·语音识别
云端源想12 分钟前
浅谈大语言模型(LLM)的微调与部署
人工智能·语言模型·自然语言处理
瑶光守护者1 小时前
并行计算编程模型的发展方向与RISC-V的机遇
人工智能·笔记·学习·架构·risc-v
初心丨哈士奇2 小时前
基于大模型的GitLab CodeReview 技术调研
前端·人工智能·node.js
Luis Li 的猫猫2 小时前
基于MATLAB的冰块变化仿真
开发语言·图像处理·人工智能·算法·matlab
xiatian_win1232 小时前
本地部署 OpenManus 保姆级教程(Windows 版)
人工智能·windows
BigBookX2 小时前
使用OpenCV来获取视频的帧率
python·opencv
蹦蹦跳跳真可爱5892 小时前
Python----计算机视觉处理(opencv:像素,RGB颜色,图像的存储,opencv安装,代码展示)
人工智能·python·opencv·计算机视觉
BIT_Legend3 小时前
Torch 模型 model => .onnx => .trt 及利用 TensorTR 在 C++ 下的模型部署教程
c++·人工智能·python·深度学习