カメラからビデオをキャプチャし、背景を削除した後、別のビデオにオーバーレイするOpenCVアプリケーションを構築しています。
バックグラウンド除去が3fpsで機能しているのに対し、出力を約1 fpsで再生しているため、妥当な速度を達成できません。
バックグラウンドビデオを通常の速度で表示し、処理されたビデオを3fpsでオーバーレイする方法はありますか?
コードをコメントアウトしてみたところ、問題は主にレンダリング部分自体にあることがわかりました。Webカメラフィードと一緒にビデオを表示しようとしましたが、openCVで表示すると、実際のfpsとビデオのfpsが低下することに気付きました。
サンプルコードは次のとおりです。
void main()
{
CvCapture* capture, *Vcap;
capture = cvCaptureFromCAM(0);
if(!capture)
{
printf("Video Load Error");
}
Vcap = cvCaptureFromAVI("bgDemo.mp4");
//printf("\nEntered BGR");
if(!Vcap)
{
printf("Video Load Error");
}
while(1)
{
IplImage* src = cvQueryFrame(Vcap);
if(!src)
{
Vcap = cvCaptureFromAVI("bgDemo.mp4");
continue;
}
IplImage* bck1 = cvCreateImage(cvGetSize(src),8,3);
cvResize(src,bck1,CV_INTER_LINEAR);
cvShowImage("BCK",bck1);
cvWaitKey(1);
}
}