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

基于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++;  
     
   //如果是第一幀,需要申請內存,并初始化  
   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);  
   //轉化成單通道圖像再處理  
   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);  
   //將背景轉化為圖像格式,用以顯示  
   cvConvert(pBkMat, pBkImg);  
   //顯示圖像  
   cvShowImage("video", pFrame);  
   cvShowImage("background", pBkImg);  
   cvShowImage("foreground", pFrImg);  
   //如果有按鍵事件,則跳出循環(huán)  
   //此等待也為cvShowImage函數(shù)提供時間完成顯示   
   //等待時間可以根據(jù)CPU速度調整  
   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;  
} 

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

相關文章

  • 深入分析Visual C++進行串口通信編程的詳解

    深入分析Visual C++進行串口通信編程的詳解

    本篇文章是對Visual C++進行串口通信編程進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++可調用對象callable object深入分析

    C++可調用對象callable object深入分析

    所謂的callable object,表示可以被某種方式調用其某些函數(shù)的對象。它可以是:一個函數(shù)、一個指向成員函數(shù)的指針、一個函數(shù)對象,該對象擁有operator()、一個lambda表達式,嚴格的說它是一種函數(shù)對象
    2022-08-08
  • Visual?Studio2022下Opencv的配置圖文教程

    Visual?Studio2022下Opencv的配置圖文教程

    本文主要介紹了Visual?Studio2022下Opencv的配置圖文教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • VC++開發(fā)中完美解決頭文件相互包含問題的方法解析

    VC++開發(fā)中完美解決頭文件相互包含問題的方法解析

    本文中,為了敘述方便,把class AClass;語句成為類AClass的聲明,把class AClass開始的對AClass的類成員變量、成員函數(shù)原型等的說明稱為類的定義,而把在CPP中的部分稱為類的定義
    2013-09-09
  • 在C++程序中開啟和禁用Windows設備的無線網(wǎng)卡的方法

    在C++程序中開啟和禁用Windows設備的無線網(wǎng)卡的方法

    這篇文章主要介紹了在C++程序中開啟和禁用Windows設備的無線網(wǎng)卡的方法,包括一些常見錯誤的分析與解決,需要的朋友可以參考下
    2016-03-03
  • 在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼

    在C++中高效使用和處理Json格式數(shù)據(jù)的示例代碼

    最近的項目在用c處理后臺的數(shù)據(jù)時,因為好多外部接口都在使用Json格式作為返回的數(shù)據(jù)結構和數(shù)據(jù)描述,如何在c中高效使用和處理Json格式的數(shù)據(jù)就成為了必須要解決的問題,需要的朋友可以參考下
    2023-11-11
  • C++中的數(shù)組詳情

    C++中的數(shù)組詳情

    這篇文章主要介紹了C++中的數(shù)組,數(shù)組其實也是一種數(shù)據(jù)格式,不過是一種復合類型,它可以存儲多個同類型的值。使用數(shù)組可以將同類型的變量整合起來管理,下面?zhèn)z看看文章的具體舉例內容,需要的朋友可以參考一下
    2021-11-11
  • Qt使用TabWidget實現(xiàn)多窗體功能

    Qt使用TabWidget實現(xiàn)多窗體功能

    Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,本章將重點介紹TabWidget標簽組件的常用方法及靈活運用,需要的朋友可以參考下
    2023-12-12
  • C語言中-a++和-++a運算順序實例解析

    C語言中-a++和-++a運算順序實例解析

    C語言中的a++和++a的區(qū)別在于混合表達式中運算符的處理順序,下面這篇文章主要給大家介紹了關于C語言中-a++和-++a運算順序的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • C語言 OutputDebugString與格式化輸出函數(shù)OutputDebugPrintf案例詳解

    C語言 OutputDebugString與格式化輸出函數(shù)OutputDebugPrintf案例詳解

    這篇文章主要介紹了C語言 OutputDebugString與格式化輸出函數(shù)OutputDebugPrintf案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08

最新評論