From 24dcfa1a4f9fab01826653577b8891c0bd11a300 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Sun, 29 May 2011 21:02:53 +0000 Subject: [PATCH] removed confusing CvCapture::queryFrame(); rewritten cvQueryFrame() (ticket #235) --- modules/highgui/src/cap.cpp | 6 +++++- modules/highgui/src/cap_qtkit.mm | 19 ------------------- modules/highgui/src/precomp.hpp | 1 - 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/modules/highgui/src/cap.cpp b/modules/highgui/src/cap.cpp index a5b94cb..0914822 100644 --- a/modules/highgui/src/cap.cpp +++ b/modules/highgui/src/cap.cpp @@ -73,7 +73,11 @@ CV_IMPL void cvReleaseCapture( CvCapture** pcapture ) CV_IMPL IplImage* cvQueryFrame( CvCapture* capture ) { - return capture ? capture->queryFrame() : 0; + if(!capture) + return 0; + if(!capture->grabFrame()) + return 0; + return capture->retrieveFrame(0); } diff --git a/modules/highgui/src/cap_qtkit.mm b/modules/highgui/src/cap_qtkit.mm index 80b043c..c999ce7 100644 --- a/modules/highgui/src/cap_qtkit.mm +++ b/modules/highgui/src/cap_qtkit.mm @@ -99,7 +99,6 @@ public: ~CvCaptureCAM(); virtual bool grabFrame(); virtual IplImage* retrieveFrame(int); - virtual IplImage* queryFrame(); virtual double getProperty(int property_id); virtual bool setProperty(int property_id, double value); virtual int didStart(); @@ -142,7 +141,6 @@ public: ~CvCaptureFile(); virtual bool grabFrame(); virtual IplImage* retrieveFrame(int); - virtual IplImage* queryFrame(); virtual double getProperty(int property_id); virtual bool setProperty(int property_id, double value); virtual int didStart(); @@ -294,18 +292,6 @@ IplImage* CvCaptureCAM::retrieveFrame(int) { return [capture getOutput]; } -IplImage* CvCaptureCAM::queryFrame() { - while (!grabFrame()) { - cout << "WARNING: Couldn't grab new frame from camera!!!" << endl; - /* - cout << "Attempting to restart camera; set capture property DISABLE_AUTO_RESTART to disable." << endl; - stopCaptureDevice(); - startCaptureDevice(camNum); - */ - } - return retrieveFrame(0); -} - void CvCaptureCAM::stopCaptureDevice() { NSAutoreleasePool* localpool = [[NSAutoreleasePool alloc] init]; @@ -781,11 +767,6 @@ IplImage* CvCaptureFile::retrieveFrame(int) { return retrieveFramePixelBuffer(); } -IplImage* CvCaptureFile::queryFrame() { - grabFrame(); - return retrieveFrame(0); -} - double CvCaptureFile::getFPS() { if (mCaptureSession == nil) return 0; NSAutoreleasePool* localpool = [[NSAutoreleasePool alloc] init]; diff --git a/modules/highgui/src/precomp.hpp b/modules/highgui/src/precomp.hpp index 1a96b41..8e3b173 100644 --- a/modules/highgui/src/precomp.hpp +++ b/modules/highgui/src/precomp.hpp @@ -98,7 +98,6 @@ struct CvCapture virtual bool setProperty(int, double) { return 0; } virtual bool grabFrame() { return true; } virtual IplImage* retrieveFrame(int) { return 0; } - virtual IplImage* queryFrame() { return grabFrame() ? retrieveFrame(0) : 0; } virtual int getCaptureDomain() { return CV_CAP_ANY; } // Return the type of the capture object: CV_CAP_VFW, etc... }; -- 2.7.4