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

基于OpenCv的運動物體檢測算法

 更新時間:2018年01月22日 14:36:29   作者:Liu_LongPo  
這篇文章主要為大家詳細介紹了基于OpenCv的運動物體檢測算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

基于一個實現(xiàn)的基于OpenCv的運動物體檢測算法,可以用于檢測行人或者其他運動物體。

#include <stdio.h>  
#include <cv.h>  
#include <cxcore.h>  
#include <highgui.h>  
int main( int argc, char** argv )  
  
 //聲明IplImage指針  
 IplImage* pFrame = NULL;  
 IplImage* pFrImg = NULL;  
 IplImage* pBkImg = NULL;  
 CvMat* pFrameMat = NULL;  
 CvMat* pFrMat = NULL;  
 CvMat* pBkMat = NULL;  
  
 CvCapture* pCapture = NULL;  
   
 int nFrmNum = 0;  
 //創(chuàng)建窗口   
 cvNamedWindow("video", 1);  
 cvNamedWindow("background",1);  
 cvNamedWindow("foreground",1);  
 //使窗口有序排列  
 cvMoveWindow("video", 30, 0);  
 cvMoveWindow("background", 360, 0);  
 cvMoveWindow("foreground", 690, 0);  
 argc = 1; 
  
 if( argc > 2 )  
  {  
   fprintf(stderr, "Usage: bkgrd [video_file_name]\n");  
   return -1;  
  }  
 //打開攝像頭  
 if (argc ==1)  
  if( !(pCapture = cvCaptureFromCAM(-1)))  
   {  
  fprintf(stderr, "Can not open camera.\n");  
  return -2;  
   }  
 //打開視頻文件  
 if(argc == 2)  
  if( !(pCapture = cvCaptureFromFile(argv[1])))  
   {  
  fprintf(stderr, "Can not open video file %s\n", argv[1]);  
  return -2;  
   }  
   
 //逐幀讀取視頻  
 while(pFrame = cvQueryFrame( pCapture ))  
  {  
   nFrmNum++;  
     
   //如果是第一幀,需要申請內(nèi)存,并初始化  
   if(nFrmNum == 1)  
  {  
   pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);  
   pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);  
   pBkMat  = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);  
   pFrMat  = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);  
   pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);  
   //轉(zhuǎn)化成單通道圖像再處理  
   cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);  
   cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);  
   cvConvert(pFrImg, pFrameMat);  
   cvConvert(pFrImg, pFrMat);  
   cvConvert(pFrImg, pBkMat);  
  }  
   else  
  {  
   cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);  
   cvConvert(pFrImg, pFrameMat);  
   //先高斯濾波,以平滑圖像  
   //cvSmooth(pFrameMat, pFrameMat, CV_GAUSSIAN, 3, 0, 0);  
     
   //當前幀跟背景圖相減  
   cvAbsDiff(pFrameMat, pBkMat, pFrMat);  
   //二值化前景圖  
   cvThreshold(pFrMat, pFrImg, 60, 255.0, CV_THRESH_BINARY);  
   //進行形態(tài)學濾波,去掉噪音   
   //cvErode(pFrImg, pFrImg, 0, 1);  
   //cvDilate(pFrImg, pFrImg, 0, 1);  
   //更新背景  
   cvRunningAvg(pFrameMat, pBkMat, 0.003, 0);  
   //將背景轉(zhuǎn)化為圖像格式,用以顯示  
   cvConvert(pBkMat, pBkImg);  
   //顯示圖像  
   cvShowImage("video", pFrame);  
   cvShowImage("background", pBkImg);  
   cvShowImage("foreground", pFrImg);  
   //如果有按鍵事件,則跳出循環(huán)  
   //此等待也為cvShowImage函數(shù)提供時間完成顯示   
   //等待時間可以根據(jù)CPU速度調(diào)整  
   if( cvWaitKey(2) >= 0 )  
    break;  
  
  }  
  }  
    
 //銷毀窗口  
 cvDestroyWindow("video");  
 cvDestroyWindow("background");  
 cvDestroyWindow("foreground");  
 //釋放圖像和矩陣  
 cvReleaseImage(&pFrImg);  
 cvReleaseImage(&pBkImg);  
 cvReleaseMat(&pFrameMat);  
 cvReleaseMat(&pFrMat);  
 cvReleaseMat(&pBkMat);  
 cvReleaseCapture(&pCapture);  
 return 0;  
} 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言中的結(jié)構(gòu)體的入門學習教程

    C語言中的結(jié)構(gòu)體的入門學習教程

    這篇文章主要介紹了C語言中的結(jié)構(gòu)體的入門學習教程,以struct語句定義的結(jié)構(gòu)體是C語言編程中的重要基礎(chǔ),需要的朋友可以參考下
    2015-12-12
  • 利用C語言實現(xiàn)2048小游戲的方法

    利用C語言實現(xiàn)2048小游戲的方法

    2048是比較流行的一款數(shù)字游戲,相信對大家來說都不陌生,這篇文章給大家分享了利用C語言實現(xiàn)2048小游戲的方法,對大家學習理解C語言具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧
    2018-10-10
  • C++Zip壓縮解壓縮示例(支持遞歸壓縮)

    C++Zip壓縮解壓縮示例(支持遞歸壓縮)

    C++Zip壓縮解壓縮示例,用第三方函數(shù)封裝而成,支持 UNCODE, ANSCII、支持壓縮文件夾、支持遞歸壓縮
    2013-11-11
  • C語言變長數(shù)組 struct中char data[0]的用法詳解

    C語言變長數(shù)組 struct中char data[0]的用法詳解

    下面小編就為大家?guī)硪黄狢語言變長數(shù)組 struct中char data[0]的用法詳解。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++詳細分析線程間的同步通信

    C++詳細分析線程間的同步通信

    線程間不通信的話,每個線程受CPU的調(diào)度,沒有任何執(zhí)行上的順序可言,線程1和線程2是根據(jù)CPU調(diào)度算法來的,兩個線程都有可能先運行,是不確定的,線程間的運行順序是不確定的,所以多線程程序出問題,難以復現(xiàn),本章我們就來了解線程間的同步通信
    2022-05-05
  • C/C++ 中memset() 函數(shù)詳解及其作用介紹

    C/C++ 中memset() 函數(shù)詳解及其作用介紹

    這篇文章主要介紹了C/C++ 中memset() 函數(shù)詳解及其作用介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • C++實現(xiàn)字符串刪除字符后逆序輸出

    C++實現(xiàn)字符串刪除字符后逆序輸出

    這篇文章主要為大家詳細介紹了C++實現(xiàn)字符串刪除字符后逆序輸出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++編譯原理之求解First集合

    C++編譯原理之求解First集合

    這篇文章主要介紹的是C++/編譯原理求解First集合,本文將圍繞該話題詳細展開全文,需要的小伙伴可以參考一下
    2021-10-10
  • C++中線程同步與互斥的四種方式介紹及對比詳解

    C++中線程同步與互斥的四種方式介紹及對比詳解

    在C++中,當兩個或更多的線程需要訪問共享數(shù)據(jù)時,就會出現(xiàn)線程安全問題,這是因為,如果沒有適當?shù)耐綑C制,一個線程可能在另一個線程還沒有完成對數(shù)據(jù)的修改就開始訪問數(shù)據(jù),這將導致數(shù)據(jù)的不一致性和程序的不可預測性,本文介紹了C++中線程同步與互斥的四種方式介紹及對比
    2025-01-01

最新評論

皮山县| 肃宁县| 天全县| 石景山区| 镇原县| 象山县| 尤溪县| 云霄县| 哈密市| 武邑县| 侯马市| 望都县| 忻城县| 越西县| 万年县| 泽州县| 雷山县| 五莲县| 松溪县| 健康| 马山县| 江阴市| 龙岩市| 英吉沙县| 许昌市| 开原市| 南郑县| 临澧县| 明星| 蓬溪县| 二连浩特市| 昌图县| 宜昌市| 体育| 诸暨市| 垫江县| 司法| 汪清县| 中牟县| 罗定市| 榕江县|