這可能是一個開放式問題。我已經編寫了一個opencv應用程序,用於捕獲連接到計算機的兩臺外部攝像頭的供稿。兩個攝像頭的捕捉在兩個不同的線程上並行運行。該錄像機模塊將幀寫入到稍後處理的視頻文件中。下面的代碼位於每個線程函數內部:使用opencv瞭解攝像頭捕獲率
CvCapture *capture =cvCaptureFromCAM(indexOfCamera);
if(!capture) return;
CvSize sz =cvGetSize(cvQueryFrame(capture));
cvNamedWindow("src");
CvVideoWriter *writer =cvCreateVideoWriter((char*) p, CV_FOURCC('L','A','G','S'), 20, sz);
if(!writer) {
cvReleaseCapture(&capture);
return;
}
IplImage *frame;
int frameCounter =0;
while(true){
QueryPerformanceCounter(&sideCamCounter);
frame =cvQueryFrame(capture);
if(!frame)break;
//Store timestamp of frame somewhere
cvShowImage("src", frame);
cvWriteFrame(writer, frame);
int c=cvWaitKey(1);
if((char)c ==27)break;
++frameCounter;
}
cvReleaseVideoWriter(&writer);
cvReleaseCapture(&capture);
cvDestroyAllWindows();
兩個相機我使用是:A - 羅技球AF攝像頭 - 筆記本電腦和B微軟HD-6000 LifeCam的。相機A以大約16-20fps的速度拍攝(在幾次拍攝中可達到30fps),相機B以10-12fps的速度拍攝。
我需要更快的捕捉速率來捕捉實時動作。我知道我會受到相機捕捉速度/速率的限制,但除此之外,還有哪些其他因素會影響捕捉速率 - 例如加載系統(內存和CPU),API的使用?我願意探索各種選擇。謝謝。
感謝您的幫助。我嘗試了所有的東西,但沒有一個會影響捕獲率。 –