Added test and workaround for #1942
authorAndrey Kamaev <no@email>
Wed, 16 May 2012 15:11:17 +0000 (15:11 +0000)
committerAndrey Kamaev <no@email>
Wed, 16 May 2012 15:11:17 +0000 (15:11 +0000)
modules/core/src/matrix.cpp
modules/core/test/test_mat.cpp

index 670388d..845bd89 100644 (file)
@@ -2897,8 +2897,16 @@ cvKMeans2( const CvArr* _samples, int cluster_count, CvArr* _labels,
 namespace cv
 {
 
-Mat Mat::reshape(int, int, const int*) const
+Mat Mat::reshape(int _cn, int _newndims, const int* _newsz) const
 {
+    if(_newndims == dims)
+    {
+        if(_newsz == 0)
+            return reshape(_cn);
+        if(_newndims == 2)
+            return reshape(_cn, _newsz[0]);
+    }
+
     CV_Error(CV_StsNotImplemented, "");
     // TBD
     return Mat();
index 346accd..f588ae4 100644 (file)
@@ -861,3 +861,14 @@ TEST(Core_IOArray, submat_create)
     EXPECT_THROW( OutputArray_create1(A.row(0)), cv::Exception );
     EXPECT_THROW( OutputArray_create2(A.row(0)), cv::Exception );
 }
+
+TEST(Core_Mat, reshape_1942)
+{
+    cv::Mat A = (cv::Mat_<float>(2,3) << 3.4884074, 1.4159607, 0.78737736,  2.3456569, -0.88010466, 0.3009364);
+    int cn = 0;
+    ASSERT_NO_THROW(
+        cv::Mat_<float> M = A.reshape(3);
+        cn = M.channels();
+    );
+    ASSERT_EQ(1, cn);
+}
\ No newline at end of file