亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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進行預(yù)處理?;蛘咛嵘曨l的質(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++強制類型轉(zhuǎn)換(static_cast、dynamic_cast、const_cast、reinterpret_cast)

    C++強制類型轉(zhuǎn)換(static_cast、dynamic_cast、const_cast、reinterpret_ca

    本文主要介紹了C++強制類型轉(zhuǎn)換,主要介紹了static_cast、dynamic_cast、const_cast、reinterpret_cast的4種方法,感興趣的可以了解一下
    2021-08-08
  • c++primer:變量和基本類型詳解

    c++primer:變量和基本類型詳解

    今天小編就為大家分享一篇關(guān)于C++Primer中變量和基本類型的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-08-08
  • C++實現(xiàn)統(tǒng)計代碼運行時間的示例詳解

    C++實現(xiàn)統(tǒng)計代碼運行時間的示例詳解

    這篇文章主要為大家詳細介紹了C++一個有趣的小項目——統(tǒng)計代碼運行時間,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-05-05
  • C 字符串數(shù)組排序的小例子

    C 字符串數(shù)組排序的小例子

    C 字符串數(shù)組排序的小例子,需要的朋友可以參考一下
    2013-03-03
  • 深入理解鏈表的各類操作詳解

    深入理解鏈表的各類操作詳解

    本篇文章是對鏈表的各類操作進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • c++中的指針最全總結(jié)

    c++中的指針最全總結(jié)

    指針是整個C++的精髓所在,只有精通了指針才可以說是掌握了C++,可以說學習C++的過程是個熟練掌握和使用指針的過程,下面這篇文章主要給大家介紹了關(guān)于c++中指針的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • OpenCV 圖像拼接和圖像融合的實現(xiàn)

    OpenCV 圖像拼接和圖像融合的實現(xiàn)

    本文主要介紹了OpenCV 圖像拼接和圖像融合,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C/C++指針與內(nèi)存管理圖文詳解

    C/C++指針與內(nèi)存管理圖文詳解

    這篇文章主要為大家詳細介紹了C/C++指針與內(nèi)存管理,使用文圖并敘的方式,文中圖片介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 簡單談?wù)凜++ 頭文件系列之(algorithm)

    簡單談?wù)凜++ 頭文件系列之(algorithm)

    <algorithm>是c++特有的STL模板的算法頭文件 包含了一些特定的算法函數(shù) 包括sort(),stable_sort(),partical_sort(),nth_element()等常用的算法函數(shù)
    2017-02-02
  • 使用C語言繪制統(tǒng)計圖中的餅圖

    使用C語言繪制統(tǒng)計圖中的餅圖

    常用的統(tǒng)計圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,本文主要為大家詳細介紹了如何使用使用C語言繪制統(tǒng)計圖中的餅圖,希望對大家有所幫助
    2024-02-02

最新評論