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

运行结果

相关推荐
数字芯片实验室几秒前
AI时代,芯片工程师的入行门槛也被重新定义了
人工智能
Fairy要carry5 分钟前
面试-Infra之FFN
人工智能
mtouch3339 分钟前
三维电子沙盘模型全参数化精准调控数字沙盘系统
人工智能·ai·虚拟现实·电子沙盘·数字沙盘·增强现实·军事指挥沙盘
AI智能观察10 分钟前
GEO排名查询监测平台推荐:五款核心工具解析AI搜索时代品牌战略
人工智能·geo·智能营销·geo优化·流量营销·geo工具·geo平台
Luhui Dev21 分钟前
HKU CodePlot-CoT 深度解析:视觉推理还是几何推理?
人工智能·几何学
Coding茶水间21 分钟前
基于深度学习的番茄叶子病虫害监测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·python·深度学习·yolo·目标检测
guygg8837 分钟前
基于人工神经网络的彩色图像恢复 MATLAB实现
开发语言·计算机视觉·matlab
thorn_r40 分钟前
RAG系统练手与思考
人工智能·python·机器学习·ai·自然语言处理
AxureMost1 小时前
AI提示词进阶玩法
人工智能·ai
KG_LLM图谱增强大模型1 小时前
MinerU:开源高精度文档内容提取解决方案——为大模型时代构建高质量数据基础设施
人工智能·知识图谱