我正在使用 C++ 和 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 秒的延迟。
谢谢你。
最佳答案
你用的是什么版本的opencv?您正在使用使用英特尔线程构建模块 (tbb.dll) 的构建吗?如果没有,那就使用它,那是你的加速器。
你也可以尝试一个简单的代码来看看你得到了什么类型的加速:
存储 = cvCreateMemStorage(0);
捕获 = cvCaptureFromCAM(1);
while(1) {
帧 = cvQueryFrame(捕获);
cvWaitKey(1);
}
除此之外,我建议使用 c++ 接口(interface)来 opencv,c 接口(interface)非常难看,可能会更慢。
关于performance - OpenCV 的视频流很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155728/