我正在嘗試編寫錄製軟件,它可以將進入計算機的視頻流寫入avi文件。我使用OpenCV並附帶videoInput.h來處理directshow代碼。以防萬一它很重要我使用Visual Studio 2010作爲編譯器。OpenCV videoInput.h捕捉速度不同於寫入速度
我遇到的問題是錄製的文件播放速度比預覽文件快。不是很多,但足以讓人知道。例如:10秒的預覽大概是7秒的文件,所以每個人的移動速度都有點過快。
if(bWriteVideo)
{
writer=cvCreateVideoWriter(szFileName,CV_FOURCC('D','I','V','X'),
fps,cvSize(width, height),isColor);
if(!writer) return 1;
}
if(bDisplayVideo)
cvNamedWindow("video", 0);
while(key != 'q')
{
if(VI.isFrameNew(nSource))
{
VI.getPixels(nSource, yourBuffer1, false, true);
frame = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
frame->imageData = (char*)yourBuffer1;
frame->imageDataOrigin = frame->imageData;
if(!frame) break;
// Display Image to Screen
if(bDisplayVideo)
cvShowImage("video" , frame);
if(bWriteVideo)
cvWriteFrame(writer, frame);
}
key = cvWaitKey (1000/fps);
}
感謝幫助!我最終完全放棄了「cvWatiKey」,因爲它只能在OpenCV窗口生成時使用,並且最終這是一個控制檯應用程序,但是等待會減慢速度。 – Kerigan 2011-02-22 15:24:17