最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV使用BSM統(tǒng)計視頻中移動的對象

 更新時間:2023年02月21日 09:41:13   作者:音視頻開發(fā)老舅  
這篇文章主要為大家詳細介紹了OpenCV如何使用BackgroundSubstractor(BSM)實現(xiàn)視頻中移動對象統(tǒng)計功能,文中的示例代碼講解詳細,需要的可以參考一下

1、概述

案例:使用BackgroundSubstractor實現(xiàn)視頻中移動對象統(tǒng)計

實現(xiàn)步驟:

1.實例化VideoCapture

2.創(chuàng)建BackgroundSubstractor

3.while循環(huán)讀取視頻幀

4.使用BS->apply獲取mask

5.對mask進行二值化及形態(tài)學操作

6.使用findContours執(zhí)行輪廓發(fā)現(xiàn)

7.統(tǒng)計最大外接矩形

8.輸出結(jié)果

ps:這個算法的抗干擾能力比較差,要相出正確的結(jié)果,必須要對frame進行預處理。或者提升視頻的質(zhì)量才行。不然只能得到一個錯誤的結(jié)果

2、代碼示例

Move_Video_Object_Tracking::Move_Video_Object_Tracking(QWidget *parent)
    : MyGraphicsView{parent}
{
    this->setWindowTitle("視頻中移動對象統(tǒng)計");
    QPushButton *btn = new QPushButton(this);
    btn->setText("選擇視頻");
    connect(btn,&QPushButton::clicked,[=](){
        choiceVideo();
    });
 
}
 
 
void Move_Video_Object_Tracking::choiceVideo(){
    path = QFileDialog::getOpenFileName(this,"請選擇視頻","/Users/yangwei/Downloads/",tr("Image Files(*.mp4 *.avi)"));
    qDebug()<<"視頻路徑:"<<path;
    showMoveVideoObjectTracking(path.toStdString().c_str());
}
 
void Move_Video_Object_Tracking::showMoveVideoObjectTracking(const char* filePath){
    VideoCapture capture;
    capture.open(filePath);
 
    if(!capture.isOpened()){
        qDebug()<<"無法加載視頻文件";
        return;
    }
    Ptr<BackgroundSubtractor> mogSubstractor = createBackgroundSubtractorMOG2();
    Mat frame,gauss,mask;
    Mat kernel = getStructuringElement(MORPH_RECT,Size(3,3));
    int count=0;
    char text[8];
    while(capture.read(frame)){
        GaussianBlur(frame,gauss,Size(5,5),0,0);
        mogSubstractor->apply(gauss,mask);//獲取mask
        threshold(mask,mask,0,255,THRESH_BINARY|cv::THRESH_OTSU);
        //執(zhí)行形態(tài)學操作
        morphologyEx(mask,mask,MORPH_OPEN,kernel);
        dilate(mask,mask,kernel,Point(-1,-1));
        imshow("mask",mask);
 
        //找到最大輪廓定位外接矩形
        vector<vector<Point>> contours;
        vector<Vec4i> heri;
        //尋找最大外接矩形
        findContours(mask,contours,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
        count = 0;
        for(size_t i = 0;i<contours.size();i++){
            double area = contourArea(contours[i]);
            if(area<5000){
                continue;
            }
            Rect rect = boundingRect(contours[i]);
            qDebug()<<rect.width<<":"<<rect.height;
            if (rect.width < 200 || rect.height < 100) continue;
            count++;
            rectangle(frame,rect,Scalar(0,0,255),3,8);
            sprintf(text,"%d",count);
            putText(frame,text,Point(rect.x+rect.width/2,rect.y+rect.height/2),FONT_ITALIC, FONT_HERSHEY_PLAIN,Scalar(0,255,0),2,8);
        }
 
 
        imshow("frame",frame);
 
        int c = waitKey(1);
        if(c==27){
            break;
        }
    }
    capture.release();
 
}

3、演示圖片

到此這篇關(guān)于OpenCV使用BSM統(tǒng)計視頻中移動的對象的文章就介紹到這了,更多相關(guān)OpenCV BSM統(tǒng)計視頻移動對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 實例詳解C/C++中extern關(guān)鍵字

    實例詳解C/C++中extern關(guān)鍵字

    這篇文章主要介紹了C/C++中extern關(guān)鍵字詳解 的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • 如何用矩形法(梯形法)求定積分

    如何用矩形法(梯形法)求定積分

    思路就是將積分區(qū)間劃分成n等份,然后將這n等份近似看成矩形(或梯形),然后對所有的矩形(或梯形)的面積進行求和
    2013-09-09
  • 詳解C語言中freopen()函數(shù)和fclose()函數(shù)的用法

    詳解C語言中freopen()函數(shù)和fclose()函數(shù)的用法

    這篇文章主要介紹了詳解C語言中freopen()函數(shù)和fclose()函數(shù)的用法,是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • C++中bitset位圖介紹及模擬實現(xiàn)

    C++中bitset位圖介紹及模擬實現(xiàn)

    位圖就是用每一位來存放某種狀態(tài),適用于海量數(shù)據(jù),本文就介紹一下C++中bitset位圖介紹及模擬實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-07-07
  • C語言的分支和循環(huán)語句你真的了解嗎

    C語言的分支和循環(huán)語句你真的了解嗎

    這篇文章主要為大家詳細介紹了C語言的分支和循環(huán)語句,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++ Boost命令行解析庫的應用詳解

    C++ Boost命令行解析庫的應用詳解

    命令行解析庫是一種用于簡化處理命令行參數(shù)的工具,它可以幫助開發(fā)者更方便地解析命令行參數(shù)并提供適當?shù)膸椭畔?本文主要介紹了不同的命令行解析庫和它們在C++項目中的應用,希望對大家有所幫助
    2023-11-11
  • C++?QT?QThread啟動、停止、暫停和恢復的實現(xiàn)

    C++?QT?QThread啟動、停止、暫停和恢復的實現(xiàn)

    本文主要介紹了C++?QT?QThread啟動、停止、暫停和恢復的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • C語言入門篇--變量的左值和右值

    C語言入門篇--變量的左值和右值

    本篇文章是基礎篇,適合c語言剛?cè)腴T的朋友,本文對初識c語言的指針和指針變量做了簡單的分析,幫助大家快速入門c語言的世界,更好的理解c語言
    2021-08-08
  • 基于Qt實現(xiàn)Android的圖案密碼效果

    基于Qt實現(xiàn)Android的圖案密碼效果

    這篇文章主要為大家詳細介紹了如何基于Qt實現(xiàn)Android的圖案密碼效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2024-12-12
  • 關(guān)于c語言指針的兩處小tip分享

    關(guān)于c語言指針的兩處小tip分享

    本篇文章是對c語言中指針的兩處小tip進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論

漳浦县| 寻乌县| 石河子市| 嘉荫县| 宝应县| 万荣县| 襄汾县| 富蕴县| 霍山县| 巴楚县| 衡南县| 聊城市| 中宁县| 鞍山市| 尼玛县| 齐齐哈尔市| 小金县| 托克逊县| 吉安县| 安西县| 怀安县| 武强县| 德江县| 张家港市| 子洲县| 和顺县| 高尔夫| 阿坝县| 江陵县| 阳原县| 湖北省| 玉屏| 延安市| 原平市| 舒城县| 习水县| 高阳县| 卓尼县| 新河县| 闸北区| 绩溪县|