freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opencv目標跟蹤與檢測課程設計(編輯修改稿)

2024-12-16 15:56 本頁面
 

【文章內(nèi)容簡介】 要一些視頻的轉換器。自己就在網(wǎng)上下載了一個貍窩視頻轉換器用來轉換視頻格式。 (3)流程圖 開始 創(chuàng)建一個 CvCapture 指針加載一個視頻。 得到一個IplImage 指針以獲取下一幀視頻 按下 esc鍵 加載一個窗口 創(chuàng)建一個窗口以顯示所加載的視頻,以每一幀的方式 關閉視頻 結束 繼續(xù)播放視頻 播放結束 (4)加載視頻中可能遇到的問題以及可能的原因。 1視頻文件路徑?jīng)]寫對 2沒有安裝解碼器 3 如 果 使 用 的 是 或 更 高 版 本 , 那 么 , 能 否 正 確 加 載 4盡管是 AVI 文件,但也可能使用了某種 codec,例如 :MJPEG Depressor。 需要把它轉換 OpenCV 支持的 AVI文件 . OpenCV 支持的 AVI。例如使用貍窩全能視頻轉換器,在《預置方案》處,選擇 AVIAudio_Video Interleaved(*.avi)?;蛘呤褂酶袷焦S也可以。 5讀攝像頭數(shù)據(jù),需要安裝與攝像頭相應的驅動程序。 ( 5)運行結果 (6)加載視頻既可以使用加載一段視頻,也可以打開一個自己電腦上的攝像頭。 CvCapture 是一個結構體,用來保存圖像捕獲所需要的信息。 opencv 提供兩種方式從外部捕獲圖像 一種是從攝像頭中,一種是通過解碼視頻得到圖像。兩種方式都必須從第一幀開始一幀一幀的按順序獲取,因此每獲取一幀后都要保存相應的狀態(tài)和參數(shù)。 比如從視頻文件中獲取,需要保存視頻文件的文件名,相應的解碼器類型,下一次如果要獲取將需要解碼哪一幀等。 這些信息都保存在 CvCapture 結構中,每獲取一幀后,這些信息都將被更新,獲取下一幀需要將新信息傳給獲取的 api 接口 獲取攝像頭,顯示圖像 。 (1)與其相關的說明 在獲取攝像頭之前先來熟悉以下 opencv 中視頻獲取的數(shù)據(jù)結構的管理方式。 :視頻獲取結構 說明: OpenCV中的視頻獲取結構。結構 CVCapture 沒有公共接口,它只能用來作視頻獲取函數(shù)中實用的一個參數(shù)。 :初始化文件中獲取視頻 語法: CvCapture * cvCreateFileCapture(const char *filename)。 攝像頭 cvQueryFrame 視頻文件 cvCreateFileCapture CvCapture cvCreateCameraCapture IplImage 參數(shù) 類型 說明 Filename const char* 使用視頻文件名 說明:該函數(shù)給指定文件的視頻流分配和初始化 CvCapture. 返回值 。分配的 CvCapure :從攝像頭中獲取視頻 語法: CvCapture * cvCaptureFromCAM(int index) 參數(shù) 類型 說明 Index in t index 指的是攝像頭的索引,當只有一個攝像頭時, index 設為 1 4. cvQueryFrame:從攝像頭或者文件中抓取并返回一幀 語法: IplImage* cvQueryFrame(CvCapture * capture) 參數(shù) 類型 說明 cvCapture CvCapture* 視頻獲取結構 cvQueryFrame:從攝像頭或者文件中抓取一幀,然后解壓并返回一幀 。返回的圖 像不可以被用戶釋放或者修改。 返回值 。 IplImage 獲取的指針 (2)相關代碼 對 AVI 文件中的視頻進行處理,可用如下程序。獲得圖像的效果如下圖。 include int main(int argc, char* argv[]) { cvNamedWindow(avi)。 CvCapture* capture = cvCreateCameraCapture(1)。 IplImage* frame。 while(1) { frame = cvQueryFrame(capture)。 if(!frame)break。 cvShowImage(avi,frame)。 char c = cvWaitKey(33)。 if(c==27) break。 } cvReleaseCapture(amp。capture)。 cvDestroyWindow(avi)。 return 0。 } (3)相關代碼的解釋。 該代碼與加載視頻基本一致。只是有一處代碼有所改只需把cvCreateFileCapture 改成 cvCreateCameraCapture 即可。 該函數(shù)的輸入?yún)?shù)是一個 ID 號,只有存在多個攝像頭時才起作用。當 ID=1 時,表示隨機選擇一個。HighGUI 做了很多工作,使得攝像機圖像序列像一個視頻文件一樣。 (4)運行結果。 opencv 運動目標跟蹤系統(tǒng)實現(xiàn)的詳細說明 。 運動目標檢測時各種后續(xù)高級應用如目標跟蹤,目標分類,目標行為理解等的基礎主要目的是從視頻圖像中提取出運動目標并獲得運動目標的特征信息,如顏色,形狀,輪廓等。提取運動目標的過程實際上就是一個圖像分割的過程,而運動物體就只有在 連續(xù)的圖像序列(如視頻圖像序列) 中才能體現(xiàn)出來,運動目標的提取過程就是在連續(xù)的圖像序列中尋找差異,并把由于物體運動和表現(xiàn)出來的差異提取出來。 一般目標跟蹤的實現(xiàn)的流程圖。 本文的檢測算法。 連續(xù)適應性均值移動算法( CamShift) 本平臺在進行運動物體檢測跟蹤時所采用的算法是:首先利用“幀差法”檢測出初始的運動目標;一旦認為此目標合法,便根據(jù)目標在 HSI(色調、飽和度、強度)空間中 H 通道的色調特性,利用“連續(xù)適應性均值移動算法( CamShift)”,對目標進行跟蹤。 CamShift 算法簡述如下: ( 1) 在圖像 HSI 空間中計算 H通道(色彩通道)分量的 1D 直方圖 ( 2) 利用此 1D 直方圖將原圖改建成 2D 概率分布圖 ( 3) 計算出目標區(qū)域的重心。 ( 4) 利用經(jīng)典的“ Mean Shift”算法,不斷平移調整窗口中心到與目標重心重合 ( 5)將上一幀的窗口大小和中心,作為下一幀 Mean Shift 算法搜索窗口的初始值,在下一幀中繼續(xù) Mean Shift 運算。 上述運動物體檢測和跟蹤的算法的流程圖 計算 H 通道分量的1 D 直方圖根據(jù) 1 D 直方圖建立2 D 概率分布圖計算出目標區(qū)域的重心Me a n S h if t 算法將上一幀結果作為下一幀初始窗口 Camshift算法原理及其 Opencv實現(xiàn) 。 CamShift 算法,即 Continuously Apative MeanShift算法,是一種運動跟蹤算法。它主要通過視頻圖像中運動物體的顏色信息來達到跟蹤的目的。我把這個算法分解成三個部分,便于理解: 1) Back Projection 計算 2) Mean Shift 算法 3) CamShift 算法 Projection 計算 Back Projection 的步驟是這樣的: 1. 計算被跟蹤目標的色彩直方圖。在各種色彩空間中,只有 HSI 空間 (或與 HSI類似的色 彩空間 )中的 H 分量可以表示顏色信息。所以在具體的計算過程中,首先將其他的色彩空間的值轉化到 HSI 空間,然后會其中的 H 分量做 1D 直方圖計算。 2. 根據(jù)獲得的色彩直方圖將原始圖像轉化成色彩概率分布圖像,這個過程就被稱作 Back Projection。 在 OpenCV 中的直方圖函數(shù)中,包含 Back Projection 的函數(shù),函數(shù)原型是: void cvCalcBackProject(IplImage** img, CvArr** backproject, const CvHistogram* hist)。 傳遞給這個函數(shù)的參數(shù)有三個: 1. IplImage** img:存放原始圖像,輸入。 2. CvArr** backproject:存放 Back Projection 結果,輸出。 3. CvHistogram* hist:存放直方圖,輸入 Back Projection 的 OpenCV 代碼。 ( 1) 準備一張只包含被跟蹤目標的圖片,將色彩空間轉化到 HSI 空間,獲得其中的 H分量: IplImage* target=cvLoadImage(,1)。 //裝載圖片 IplImage* target_hsv=cvCreateImage( cvGetSize(target), IPL_DEPTH_8U, 3 )。 IplImage* target_hue=cvCreateImage( cvGetSize(target), IPL_DEPTH_8U, 3 )。 cvCvtColor(target,target_hsv,CV_BGR2HSV)。 //轉化到 HSV 空間 cvSplit( target_hsv, target_hue, NULL, NULL, NULL )。 //獲得 H分量 ( 2) 計算 H分量的直方圖,即 1D直方圖: IplImage*h_plane=cvCreateImage( cvGetSize(target_hsv),IPL_DEPTH_8U,1 )。 int hist_size[]={255}。 //將 H分量的值量化到 [0,255] float* ranges[]={ {0,360} }。 //H 分量的取值范圍是 [0,360) CvHistogram* hist=cvCreateHist(1, hist_size, ranges, 1)。 cvCalcHist(amp。target_hue, hist, 0, NULL)。 在這里需要考慮 H 分量的取值范圍的問題, H分量的取值范圍是 [0,360),這個取值范圍的值不能用一個 byte 來表示,為了能用一個 byte 表示,需要將 H值做適當?shù)牧炕幚?,在這里我們將 H分量的范圍量化到 [0,255]. ( 3) 計算 Back Projection: IplImage* rawImage。 // //get from video frame,unsigned byte,one channel // IplImage* result=cvCreateImage(cvGetSize(rawImage),IPL_DEPTH_8U,1)。 cvCalcBackProject(amp。rawImage,result,hist)。 用在 cvCalcBackProject 處理中的模板是目標圖像色調 (HUE)的直方圖,而直方圖可以看作是一種概率分布圖。在處理前,目標圖像中的每一個象素的值描述的在這一點的顏色信息,而處理后,圖像中每一個象素的值就變成了這個顏色信息出現(xiàn)在此處的可能性的一種離散化的度量,出現(xiàn)的可能性大,象素的值就大,反之則小。這樣就為后面的匹配和跟蹤提供了線索。 (2)meanshift CamShift 算法, OpenCV 實現(xiàn)的第二部分,這一次重點討論 Mean Shift 算法。 ( 1)計算重心。 .在討論 Mean Shift 算法之前,首先討論在 2D 概率分布圖像中,如何計算某個區(qū)域的重心 (Mass Center)的問題,重心可以通過以下公式來計算: 0階矩 for(int i=0。iheight。i++) for(int j=0。jwidth。j++) M00+=I(i,j) 1階矩: for(int i=0。iheight。i++) for(int j=0。jwidth。j++) { M10+=i*I(i,j)。 M01+=j*I(i,j)。 } Mass Center 為: Xc=M10/M00。 Yc=M01/M00 Mean Shift 算法的具體步驟 接下來,討論 Mean Shift 算法的具體步驟, Mean Shi
點擊復制文檔內(nèi)容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1