Merged the trunk r8542:8544
authorAndrey Kamaev <no@email>
Fri, 1 Jun 2012 10:59:27 +0000 (10:59 +0000)
committerAndrey Kamaev <no@email>
Fri, 1 Jun 2012 10:59:27 +0000 (10:59 +0000)
modules/features2d/include/opencv2/features2d/features2d.hpp
modules/features2d/src/features2d_init.cpp
modules/highgui/src/cap.cpp
modules/highgui/src/cap_ffmpeg_impl.hpp
modules/highgui/src/cap_qtkit.mm
modules/video/src/video_init.cpp

index 91795a0..3e49dfb 100644 (file)
@@ -508,12 +508,14 @@ public:
      * gridRows            Grid rows count.
      * gridCols            Grid column count.
      */
-    CV_WRAP GridAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector,
+    CV_WRAP GridAdaptedFeatureDetector( const Ptr<FeatureDetector>& detector=0,
                                         int maxTotalKeypoints=1000,
                                         int gridRows=4, int gridCols=4 );
 
     // TODO implement read/write
     virtual bool empty() const;
+    
+    AlgorithmInfo* info() const;
 
 protected:
     virtual void detectImpl( const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat() ) const;
index 3312d9e..6f9e07c 100644 (file)
@@ -133,15 +133,22 @@ CV_INIT_ALGORITHM(DenseFeatureDetector, "Feature2D.Dense",
                   obj.info()->addParam(obj, "varyXyStepWithScale", obj.varyXyStepWithScale);
                   obj.info()->addParam(obj, "varyImgBoundWithScale", obj.varyImgBoundWithScale));
 
+CV_INIT_ALGORITHM(GridAdaptedFeatureDetector, "Feature2D.Grid",
+                  obj.info()->addParam(obj, "detector", (Ptr<Algorithm>&)obj.detector);
+                  obj.info()->addParam(obj, "maxTotalKeypoints", obj.maxTotalKeypoints);
+                  obj.info()->addParam(obj, "gridRows", obj.gridRows);
+                  obj.info()->addParam(obj, "gridCols", obj.gridCols));
+
 bool initModule_features2d(void)
 {
     Ptr<Algorithm> brief = createBriefDescriptorExtractor(), orb = createORB(),
         star = createStarDetector(), fastd = createFastFeatureDetector(), mser = createMSER(),
-        dense = createDenseFeatureDetector(), gftt = createGFTTDetector(), harris = createHarrisDetector();
+        dense = createDenseFeatureDetector(), gftt = createGFTTDetector(),
+        harris = createHarrisDetector(), grid = createGridAdaptedFeatureDetector();
         
     return brief->info() != 0 && orb->info() != 0 && star->info() != 0 &&
         fastd->info() != 0 && mser->info() != 0 && dense->info() != 0 &&
-        gftt->info() != 0 && harris->info() != 0;
+        gftt->info() != 0 && harris->info() != 0 && grid->info() != 0;
 }
 
 }
index d863431..8dc25f3 100644 (file)
@@ -494,19 +494,16 @@ bool VideoCapture::retrieve(Mat& image, int channel)
 
 bool VideoCapture::read(Mat& image)
 {
-    if(!grab())
-        image.release();
-    else
+    if(grab())
         retrieve(image);
+    else
+        image.release();
     return !image.empty();
 }
     
 VideoCapture& VideoCapture::operator >> (Mat& image)
 {
-    if(!grab())
-        image.release();
-    else
-        retrieve(image);
+    read(image);
     return *this;
 }
     
index 38b3697..e27ae43 100644 (file)
@@ -438,6 +438,10 @@ bool CvCapture_FFMPEG::grabFrame()
     const int max_number_of_attempts = 1 << 16;
 
     if( !ic || !video_st )  return false;
+    
+    if( ic->streams[video_stream]->nb_frames > 0 &&
+        frame_number > ic->streams[video_stream]->nb_frames )
+        return false;
 
     av_free_packet (&packet);
     
index 6efe4bd..ff5d408 100644 (file)
@@ -316,7 +316,9 @@ int CvCaptureCAM::startCaptureDevice(int cameraNum) {
        capture = [[CaptureDelegate alloc] init]; 
        
        QTCaptureDevice *device; 
-       NSArray* devices = [QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeVideo];
+    NSArray* devices = [[[QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeVideo]
+               arrayByAddingObjectsFromArray:[QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeMuxed]] retain];
+       
        if ([devices count] == 0) {
                cout << "QTKit didn't find any attached Video Input Devices!" << endl; 
                [localpool drain]; 
index 159f307..8f2812e 100644 (file)
@@ -57,6 +57,7 @@ CV_INIT_ALGORITHM(BackgroundSubtractorMOG, "BackgroundSubtractor.MOG",
 
 CV_INIT_ALGORITHM(BackgroundSubtractorMOG2, "BackgroundSubtractor.MOG2",
     obj.info()->addParam(obj, "history", obj.history);
+    obj.info()->addParam(obj, "nmixtures", obj.nmixtures);
     obj.info()->addParam(obj, "varThreshold", obj.varThreshold);
     obj.info()->addParam(obj, "detectShadows", obj.bShadowDetection));