fixed ticket #823
authorMaria Dimashova <no@email>
Mon, 31 Jan 2011 09:51:17 +0000 (09:51 +0000)
committerMaria Dimashova <no@email>
Mon, 31 Jan 2011 09:51:17 +0000 (09:51 +0000)
modules/features2d/include/opencv2/features2d/features2d.hpp
modules/features2d/src/draw.cpp

index 47883c4..6f09e7f 100644 (file)
@@ -2620,7 +2620,7 @@ struct CV_EXPORTS DrawMatchesFlags
 };
 
 // Draw keypoints.
-CV_EXPORTS void drawKeypoints( const Mat& image, const vector<KeyPoint>& keypoints, Mat& outImg,
+CV_EXPORTS void drawKeypoints( const Mat& image, const vector<KeyPoint>& keypoints, Mat& outImage,
                                const Scalar& color=Scalar::all(-1), int flags=DrawMatchesFlags::DEFAULT );
 
 // Draws matches of keypints from two images on output image.
index 6e4c428..ff0c74b 100755 (executable)
@@ -88,11 +88,24 @@ static inline void _drawKeypoint( Mat& img, const KeyPoint& p, const Scalar& col
     }
 }
 
-void drawKeypoints( const Mat& image, const vector<KeyPoint>& keypoints, Mat& outImg,
+void drawKeypoints( const Mat& image, const vector<KeyPoint>& keypoints, Mat& outImage,
                     const Scalar& _color, int flags )
 {
     if( !(flags & DrawMatchesFlags::DRAW_OVER_OUTIMG) )
-        cvtColor( image, outImg, CV_GRAY2BGR );
+    {
+        if( image.type() == CV_8UC3 )
+        {
+            image.copyTo( outImage );
+        }
+        else if( image.type() == CV_8UC1 )
+        {
+            cvtColor( image, outImage, CV_GRAY2BGR );
+        }
+        else
+        {
+            CV_Error( CV_StsBadArg, "Incorrect type of input image.\n" );
+        }
+    }
 
     RNG& rng=theRNG();
     bool isRandColor = _color == Scalar::all(-1);
@@ -100,7 +113,7 @@ void drawKeypoints( const Mat& image, const vector<KeyPoint>& keypoints, Mat& ou
     for( vector<KeyPoint>::const_iterator i = keypoints.begin(), ie = keypoints.end(); i != ie; ++i )
     {
         Scalar color = isRandColor ? Scalar(rng(256), rng(256), rng(256)) : _color;
-        _drawKeypoint( outImg, *i, color, flags );
+        _drawKeypoint( outImage, *i, color, flags );
     }
 }