diff --git a/modules/highgui/src/grfmt_tiff.hpp b/modules/highgui/src/grfmt_tiff.hpp index 6cf77302e..557b10c3c 100644 --- a/modules/highgui/src/grfmt_tiff.hpp +++ b/modules/highgui/src/grfmt_tiff.hpp @@ -103,11 +103,11 @@ public: size_t signatureLength() const; bool checkSignature( const string& signature ) const; - int normalizeChannelsNumber(int channels) const; ImageDecoder newDecoder() const; protected: void* m_tif; + int normalizeChannelsNumber(int channels) const; }; #endif diff --git a/modules/highgui/test/test_grfmt.cpp b/modules/highgui/test/test_grfmt.cpp index a3ce110a7..a7eb0c776 100644 --- a/modules/highgui/test/test_grfmt.cpp +++ b/modules/highgui/test/test_grfmt.cpp @@ -99,8 +99,11 @@ public: { if(ext_from_int(ext).empty()) continue; - for (int num_channels = 1; num_channels <= 3; num_channels+=2) + for (int num_channels = 1; num_channels <= 4; num_channels++) { + if (num_channels == 2) continue; + if (num_channels == 4 && ext!=3 /*TIFF*/) continue; + ts->printf(ts->LOG, "image type depth:%d channels:%d ext: %s\n", CV_8U, num_channels, ext_from_int(ext).c_str()); Mat img(img_r * k, img_c * k, CV_MAKETYPE(CV_8U, num_channels), Scalar::all(0)); circle(img, Point2i((img_c * k) / 2, (img_r * k) / 2), cv::min((img_r * k), (img_c * k)) / 4 , Scalar::all(255)); @@ -116,6 +119,7 @@ public: CV_Assert(img.size() == img_test.size()); CV_Assert(img.type() == img_test.type()); + CV_Assert(num_channels == img_test.channels()); double n = norm(img, img_test); if ( n > 1.0) @@ -124,35 +128,6 @@ public: ts->set_failed_test_info(ts->FAIL_MISMATCH); } } - if (ext == 3 /*TIFF*/) - { - /* 4 channels should stay 4 channels */ - int num_channels = 4; - ts->printf(ts->LOG, "image type depth:%d channels:%d ext: %s\n", CV_8U,num_channels, ext_from_int(ext).c_str()); - Mat img(img_r * k, img_c * k, CV_MAKETYPE(CV_8U, num_channels), Scalar::all(0)); - circle(img, Point2i((img_c * k) / 2, (img_r * k) / 2), cv::min((img_r * k), (img_c * k)) / 4 , Scalar::all(255)); - - string img_path = cv::tempfile(ext_from_int(ext).c_str()); - ts->printf(ts->LOG, "writing image : %s\n", img_path.c_str()); - imwrite(img_path, img); - - ts->printf(ts->LOG, "reading test image : %s\n", img_path.c_str()); - Mat img_test = imread(img_path, CV_LOAD_IMAGE_UNCHANGED); - - if (img_test.empty()) ts->set_failed_test_info(ts->FAIL_MISMATCH); - - CV_Assert(img.size() == img_test.size()); - CV_Assert(img.type() == img_test.type()); - CV_Assert(img_test.channels() == 4); - - double n = norm(img, img_test); - if ( n > 1.0) - { - ts->printf(ts->LOG, "norm = %f \n", n); - ts->set_failed_test_info(ts->FAIL_MISMATCH); - } - - } } #ifdef HAVE_JPEG