2012-02-06 103 views
1

我正在使用C++與OpenCV進行視頻處理應用程序。這是我編寫初始化網絡攝像頭的方法。視頻流與OpenCV緩慢

storage = cvCreateMemStorage(0); 
capture = cvCaptureFromCAM(1); 

cvNamedWindow("video", 1); 

while(key != 'q') { 
    frame = cvQueryFrame(capture); 
    if(!frame) { 
     fprintf(stderr, "Cannot query frame!\n"); 
     break; 
    } 
    cvFlip(frame, frame, 1); 
    frame->origin = 0; 
    key = cvWaitKey(1); 
} 

任何人都可以建議我一個解決方案,以提高從網絡攝像頭捕捉幀的速度。與使用OpenCV應用程序網絡攝像頭視頻流的實際網絡攝像機視頻流相比,延遲時間有3秒鐘。

謝謝。

回答

0

你使用的是什麼版本的opencv?您使用的是使用英特爾線程構建模塊(tbb.dll)的版本嗎?如果沒有,那麼使用它,那就是你的加速。

您也可以嘗試一個最基本的代碼只是爲了看看你會得到什麼樣的速度起來:

存儲= cvCreateMemStorage(0); capture = cvCaptureFromCAM(1); (1){ frame = cvQueryFrame(capture); cvWaitKey(1); }

除此之外,我建議使用C++接口opencv,c接口是相當醜陋,可能會更慢。

+0

hi 它的opencv 2.3實際上速度問題來了,當我嘗試檢測視頻對象只。就像我試圖檢測用戶的臉部一樣,CvSeq * faces = cvHaarDetectObjects(img,\t cascade,storage,1.1,3,0,cvSize(40,40)); 這行代碼使視頻速度變慢。我能知道它有什麼問題嗎? 謝謝 – Gimz 2012-02-06 12:58:35

+0

嗨,再次,能夠加快視頻流的比例因子增加到1.5 :) thnx再次爲我們的幫助 – Gimz 2012-02-06 14:23:03