Opencv 讀視頻文件和運(yùn)動(dòng)物體檢測(cè)讀視頻文件和運(yùn)動(dòng)物體檢測(cè)_第1頁
Opencv 讀視頻文件和運(yùn)動(dòng)物體檢測(cè)讀視頻文件和運(yùn)動(dòng)物體檢測(cè)_第2頁
Opencv 讀視頻文件和運(yùn)動(dòng)物體檢測(cè)讀視頻文件和運(yùn)動(dòng)物體檢測(cè)_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、讀視頻文件和運(yùn)動(dòng)物體檢測(cè)例程簡(jiǎn)要說明:本程序 嘗試打開本電腦上的攝像頭作為視頻輸入設(shè)備,或者將命令行的輸入?yún)?shù)作為文件名來打開的視頻文件。不管是哪一種方法,最終都是不斷的循環(huán)處理一幀一幀地處理,涉及到的圖像處理有背景擦除,平滑濾波,二值化等。/* 背景建模,運(yùn)動(dòng)物體檢測(cè)*/* opencv example* by shiqi yu 2006*/#include <stdio.h>#include <cv.h> #include <cxcore.h> #include <highgui.h>int main( int argc, char* arg

2、v )/聲明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);/使窗口有

3、序排列if( !(pcapture = cvcapturefromfile(argv1)fprintf(stderr, “can not open video file %sn“, argv1); return -2;/逐幀讀取視頻while(pframe = cvqueryframe( pcapture )nfrmnu+m+;/假如是第一幀,需要申請(qǐng)內(nèi)存,并初始化if(nfrmnum = 1)pbkimg = cvcreateimage(cvsize(pframe->width, pframe->height), ipl_depth_8u,1);pfrimg = cvcreate

4、image(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);cvmovewindow(“video“, 30,

5、0);cvmovewindow(“background“, 360, 0);cvmovewindow(“foreground“, 690, 0);if( argc > 2 )fprint(fstderr, “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)/轉(zhuǎn)化成單通道圖像再處理cvcvtcolor(

6、pframe, pbkimg, cv_bgr2gray); cvcvtcolor(pframe, pfrimg, cv_bgr2gray);elsecvconvert(pfrimg, pframemat); cvconvert(pfrimg, pfrmat); cvconvert(pfrimg, pbkmat);cvcvtcolor(pframe, pfrimg, cv_bgr2gray); cvconvert(pfrimg, pframemat);/高斯濾波先,以平滑圖像/cvsmooth(pframemat, pframemat, cv_gaussian, 3, 0, 0);/進(jìn)行形態(tài)學(xué)濾

7、波,去掉噪音/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ù)供應(yīng)時(shí)間完

8、成顯示/等待時(shí)間可以依據(jù)cpu 速度調(diào)整if( cvwaitkey(2) >= 0 )break ;/當(dāng)前幀跟背景圖相減cvabsdiff(pframemat, pbkmat, pfrmat);/二值化前景圖cvthreshold(pfrmat, pfrimg, 60, 255.0, cv_thresh_binary);編輯python2.4windowsxp# -*- coding: cp936 -*- # # 背景建模,運(yùn)動(dòng)物體檢測(cè)# #import sys# import the necessary things for opencvfrom opencv.cv import *f

9、rom opencv.highgui import *ifname= ”main”:/銷毀窗口cvdestroywindow(“video“); cvdestroywindow(“background“); cvdestroywindow(“foreground“);/釋放圖像和矩陣cvreleaseimage(&pfrimg); cvreleaseimage(&pbkimg);cvreleasemat(&pframemat); cvreleasemat(&pfrmat); cvreleasemat(&pbkmat);cvreleasecapture(&

10、amp;pcapture);return 0;sys.exit(1)#打開視頻文件#pcapture = cvcapturefromfile(sys.argv1) if not pcapture: #print(“can not open video file.“) sys.exit(1)#逐幀讀取視頻while 1:pframe = cvqueryframe( pcapture )if not pframe:print(“can not open frame.“)sys.exit(1)nfrmnum = nfrmnum1+print(nfrmnum)#假如是第一幀,需要申請(qǐng)內(nèi)存,并初始化if

11、 nfrmnum = 1:pbkimg = cvcreateimage(cvsize(pframe.width,pframe.height), ipl_depth_8u,1)pbkimg = none pfrimg = nonepbkmat = none pfrmat = none pframemat = nonenfrmnum = 0#創(chuàng)建窗口cvnamedwindow(“video“, 1) cvnamedwindow(“background“,1) cvnamedwindow(“foreground“,1)#使窗口有序排列cvmovewindow(“video“, 30, 0)cvmov

12、ewindow(“background“, 360, 0)cvmovewindow(“foreground“, 690, 0)#打開攝像頭pcapture = cvcreatecameracapture(0)if not pcapture:print(“can not open camera.“)#當(dāng)前幀跟背景圖相減cvabsdiff(pframemat, pbkmat, pfrmat)#二值化前景圖cvthreshold(pfrmat, pfrimg6,0, 255.0, cv_thresh_binary)#進(jìn)行形態(tài)學(xué)濾波,去掉噪音cverode(pfrimg, pfrimgn,one, 1

13、)cvdilate(pfrimg, pfrimgn,one, 1)#更新背景cvrunningavg(pframemat, pbkmat,0.003, none)#將背景轉(zhuǎn)化為圖像格式,用以顯示cvconvert(pbkmat, pbkimg)#顯示圖像cvshowimag“eb(ackground“, pbkimg)cvshowimag“ef(oreground“, pfrimg)pfrimg =cvcreateimage(cvsize(pframe.width, pframe.height), ipl_depth_8u,1)pbkmat = cvcreatemat(pframe.heigh

14、t, 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) cvcon

15、vert(pfrimg, pbkmat)else :cvcvtcolor(pframe, pfrimg, cv_bgr2gray) cvconvert(pfrimg, pframemat)#高斯濾波先,以平滑圖像cvsmooth(pframemat, pframemat, cv_gaussian3, 0, 0)cvflip(pframen,one,0)cvflip(pbkimgn,one,0)cvflip(pfrimgn,one,0)cvshowimag“ev(ideo“,pframe)cvreleasecapture(pcapture)sys.exit(0)#假如有按鍵大事,則跳出循環(huán)此等待也為cvshowimage 函數(shù)供應(yīng)時(shí)間完成顯示等待時(shí)間可以依據(jù)cpu 速度調(diào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論