Changed the class OrbFeaturesFinder to make it work with CV_8UC4 and CV_8UC1 images.
authorLeonid Beynenson <no@email>
Mon, 27 Feb 2012 17:46:53 +0000 (17:46 +0000)
committerLeonid Beynenson <no@email>
Mon, 27 Feb 2012 17:46:53 +0000 (17:46 +0000)
modules/stitching/src/matchers.cpp

index 0859d0e..9b6759b 100644 (file)
@@ -351,8 +351,18 @@ OrbFeaturesFinder::OrbFeaturesFinder(Size _grid_size, size_t n_features, const O
 void OrbFeaturesFinder::find(const Mat &image, ImageFeatures &features)\r
 {\r
     Mat gray_image;\r
-    CV_Assert(image.type() == CV_8UC3);\r
-    cvtColor(image, gray_image, CV_BGR2GRAY);\r
+\r
+    CV_Assert((image.type() == CV_8UC3) || (image.type() == CV_8UC4) || (image.type() == CV_8UC1));\r
+\r
+    if (image.type() == CV_8UC3) {\r
+        cvtColor(image, gray_image, CV_BGR2GRAY);\r
+    } else if (image.type() == CV_8UC4) {\r
+        cvtColor(image, gray_image, CV_BGRA2GRAY);\r
+    } else if (image.type() == CV_8UC1) {\r
+        gray_image=image;\r
+    } else {\r
+        CV_Assert(false);\r
+    }\r
 \r
     if (grid_size.area() == 1)\r
         (*orb)(gray_image, Mat(), features.keypoints, features.descriptors);\r