openCVでビデオフレームのフレーム比較をしたい。ビデオファイルのフレーム#10とフレーム#100を考えてみましょう。メインのビデオキャプチャループで実行すると機能します。しかし今、私はそれを専用のメソッド(IplImagesを入力として受け取る)に移動したいと思います。
// MAIN CAPTURE LOOP
while(1) {
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 10);
frame = cvQueryFrame(capture);
if (!frame) break;
cvShowImage("Window_1", frame);
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, 100);
nextFrame = cvQueryFrame(capture);
if (!nextFrame) break;
cvShowImage("Window_2", nextFrame); // THIS SHOWS ME TWO DIFFERENT FRAMES
// PASS THE IMAGES TO THE NEW METHOD
[self compareFrame: frame withFrame: nextFrame]);
char c = cvWaitKey(5);
if(c==27) {
NSLog(@"ESC pressed!");
break;
}
これは私の方法です(簡略化)
- (int) compareFrame: (IplImage*) firstFrame withFrame: (IplImage*) secondFrame
{
// THIS SHOWS ME ONLY THE firstFrame IN BOTH
// WINDOWS?
cvShowImage("Window_1", firstFrame);
cvShowImage("Window_2", secondFrame);
return 1;
}
なぜこれが起こるのですか?