这可能是一个开放式问题。我编写了一个 opencv 应用程序,它从连接到计算机的两个外部摄像头捕获馈送。两个相机的捕获在 2 个不同的线程上并行运行。此记录器模块将帧写入稍后处理的视频文件。以下代码位于每个线程函数中:
    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 - 适用于笔记本电脑的 Microsoft hd-6000 lifecam 和 B - Logitech sphere AF 网络摄像头。相机 A 以 16-20 fps 左右的速度拍摄(在几次录制期间达到 30 fps),相机 B 以 10-12 fps 左右的速度拍摄。
我需要更快的捕捉速率才能捕捉实时动作。我知道我会受到相机捕捉速度/速率的限制,但除此之外,还有哪些其他因素会影响捕捉速率 - 例如系统负载(内存和 CPU)、使用的 API?我愿意探索选项。谢谢。