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