* imgcodecs cmake: the option to customize supported formats list (WITH_IMGCODEC_HDR, WITH_IMGCODEC_SUNRASTER, WITH_IMGCODEC_PXM)
* imgcodecs: fixes
- fixed CMake scripts (=OFF doesn't really work)
- restore dropped GDCM block
- added _IMGCODEC_ prefix
- fixed tests
- include PAM format under WITH_IMGCODEC_PXM option
OCV_OPTION(WITH_LAPACK "Include Lapack library support" (NOT CV_DISABLE_OPTIMIZATION) IF (NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_ITT "Include Intel ITT support" ON IF (NOT APPLE_FRAMEWORK) )
OCV_OPTION(WITH_PROTOBUF "Enable libprotobuf" ON )
+OCV_OPTION(WITH_IMGCODEC_HDR "Include HDR support" ON)
+OCV_OPTION(WITH_IMGCODEC_SUNRASTER "Include SUNRASTER support" ON)
+OCV_OPTION(WITH_IMGCODEC_PXM "Include PNM (PBM,PGM,PPM) and PAM formats support" ON)
# OpenCV build components
# ===================================================
status(" GDCM:" HAVE_GDCM THEN "YES (ver ${GDCM_VERSION})" ELSE "NO")
endif()
+if(WITH_IMGCODEC_HDR OR DEFINED HAVE_IMGCODEC_HDR)
+ status(" HDR:" HAVE_IMGCODEC_HDR THEN "YES" ELSE "NO")
+endif()
+
+if(WITH_IMGCODEC_SUNRASTER OR DEFINED HAVE_IMGCODEC_SUNRASTER)
+ status(" SUNRASTER:" HAVE_IMGCODEC_SUNRASTER THEN "YES" ELSE "NO")
+endif()
+
+if(WITH_IMGCODEC_PXM OR DEFINED HAVE_IMGCODEC_PXM)
+ status(" PXM:" HAVE_IMGCODEC_PXM THEN "YES" ELSE "NO")
+endif()
+
# ========================== VIDEO IO ==========================
status("")
status(" Video I/O:")
set(GDCM_LIBRARIES gdcmMSFF) # GDCM does not set this variable for some reason
endif()
endif()
+
+if(WITH_IMGCODEC_HDR)
+ set(HAVE_IMGCODEC_HDR ON)
+elseif(DEFINED WITH_IMGCODEC_HDR)
+ set(HAVE_IMGCODEC_HDR OFF)
+endif()
+if(WITH_IMGCODEC_SUNRASTER)
+ set(HAVE_IMGCODEC_SUNRASTER ON)
+elseif(DEFINED WITH_IMGCODEC_SUNRASTER)
+ set(HAVE_IMGCODEC_SUNRASTER OFF)
+endif()
+if(WITH_IMGCODEC_PXM)
+ set(HAVE_IMGCODEC_PXM ON)
+elseif(DEFINED WITH_IMGCODEC_PXM)
+ set(HAVE_IMGCODEC_PXM OFF)
+endif()
list(APPEND GRFMT_LIBS ${GDAL_LIBRARY})
endif()
+if(HAVE_IMGCODEC_HDR)
+ add_definitions(-DHAVE_IMGCODEC_HDR)
+endif()
+
+if(HAVE_IMGCODEC_SUNRASTER)
+ add_definitions(-DHAVE_IMGCODEC_SUNRASTER)
+endif()
+
+if(HAVE_IMGCODEC_PXM)
+ add_definitions(-DHAVE_IMGCODEC_PXM)
+endif()
+
file(GLOB grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.hpp)
file(GLOB grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.cpp)
#include "grfmt_hdr.hpp"
#include "rgbe.hpp"
+#ifdef HAVE_IMGCODEC_HDR
+
namespace cv
{
}
}
+
+#endif // HAVE_IMGCODEC_HDR
#include "grfmt_base.hpp"
+#ifdef HAVE_IMGCODEC_HDR
+
namespace cv
{
}
+#endif // HAVE_IMGCODEC_HDR
+
#endif/*_GRFMT_HDR_H_*/
//
//M*/
+#include "precomp.hpp"
+
+
+#ifdef HAVE_IMGCODEC_PXM
#include <cerrno>
-#include "precomp.hpp"
#include "utils.hpp"
#include "grfmt_pam.hpp"
}
}
+
+#endif
#ifndef _OPENCV_PAM_HPP_
#define _OPENCV_PAM_HPP_
+#ifdef HAVE_IMGCODEC_PXM
+
#include "grfmt_base.hpp"
#include "bitstrm.hpp"
}
+#endif
+
#endif /* _OPENCV_PAM_HPP_ */
#include "grfmt_pxm.hpp"
#include <iostream>
+#ifdef HAVE_IMGCODEC_PXM
+
namespace cv
{
}
}
+
+#endif // HAVE_IMGCODEC_PXM
#include "grfmt_base.hpp"
#include "bitstrm.hpp"
+#ifdef HAVE_IMGCODEC_PXM
+
namespace cv
{
}
+#endif // HAVE_IMGCODEC_PXM
+
#endif/*_GRFMT_PxM_H_*/
#include "precomp.hpp"
#include "grfmt_sunras.hpp"
+#ifdef HAVE_IMGCODEC_SUNRASTER
+
namespace cv
{
}
}
+
+#endif // HAVE_IMGCODEC_SUNRASTER
#include "grfmt_base.hpp"
+#ifdef HAVE_IMGCODEC_SUNRASTER
+
namespace cv
{
}
+#endif // HAVE_IMGCODEC_SUNRASTER
+
#endif/*_GRFMT_SUNRAS_H_*/
decoders.push_back( makePtr<BmpDecoder>() );
encoders.push_back( makePtr<BmpEncoder>() );
+ #ifdef HAVE_IMGCODEC_HDR
decoders.push_back( makePtr<HdrDecoder>() );
encoders.push_back( makePtr<HdrEncoder>() );
+ #endif
#ifdef HAVE_JPEG
decoders.push_back( makePtr<JpegDecoder>() );
encoders.push_back( makePtr<JpegEncoder>() );
decoders.push_back( makePtr<WebPDecoder>() );
encoders.push_back( makePtr<WebPEncoder>() );
#endif
+ #ifdef HAVE_IMGCODEC_SUNRASTER
decoders.push_back( makePtr<SunRasterDecoder>() );
encoders.push_back( makePtr<SunRasterEncoder>() );
+ #endif
+ #ifdef HAVE_IMGCODEC_PXM
decoders.push_back( makePtr<PxMDecoder>() );
encoders.push_back( makePtr<PxMEncoder>(PXM_TYPE_AUTO) );
encoders.push_back( makePtr<PxMEncoder>(PXM_TYPE_PBM) );
encoders.push_back( makePtr<PxMEncoder>(PXM_TYPE_PGM) );
encoders.push_back( makePtr<PxMEncoder>(PXM_TYPE_PPM) );
+ decoders.push_back( makePtr<PAMDecoder>() );
+ encoders.push_back( makePtr<PAMEncoder>() );
+ #endif
#ifdef HAVE_TIFF
decoders.push_back( makePtr<TiffDecoder>() );
encoders.push_back( makePtr<TiffEncoder>() );
/// Attach the GDAL Decoder
decoders.push_back( makePtr<GdalDecoder>() );
#endif/*HAVE_GDAL*/
- decoders.push_back( makePtr<PAMDecoder>() );
- encoders.push_back( makePtr<PAMEncoder>() );
}
std::vector<ImageDecoder> decoders;
"readwrite/ordinary.bmp",
"readwrite/rle8.bmp",
"readwrite/test_1_c1.jpg",
+#ifdef HAVE_IMGCODEC_HDR
"readwrite/rle.hdr"
+#endif
};
const int basic_modes[] =
".jpg",
#endif
".bmp",
+#ifdef HAVE_IMGCODEC_PXM
".pam",
".ppm",
".pgm",
".pbm",
".pnm"
+#endif
};
vector<Size> all_sizes()
testing::ValuesIn(all_exts),
testing::ValuesIn(all_sizes())));
+#ifdef HAVE_IMGCODEC_PXM
typedef testing::TestWithParam<bool> Imgcodecs_pbm;
TEST_P(Imgcodecs_pbm, write_read)
{
}
INSTANTIATE_TEST_CASE_P(All, Imgcodecs_pbm, testing::Bool());
+#endif
//==================================================================================================
EXPECT_PRED_FORMAT2(cvtest::MatComparator(0, 0), rle, ord);
}
+#ifdef HAVE_IMGCODEC_HDR
TEST(Imgcodecs_Hdr, regression)
{
string folder = string(cvtest::TS::ptr()->get_data_path()) + "/readwrite/";
}
remove(tmp_file_name.c_str());
}
+#endif
+#ifdef HAVE_IMGCODEC_PXM
TEST(Imgcodecs_Pam, read_write)
{
string folder = string(cvtest::TS::ptr()->get_data_path()) + "readwrite/";
remove(writefile.c_str());
remove(writefile_no_param.c_str());
}
+#endif
}} // namespace
"exr",
#endif
"bmp",
+#ifdef HAVE_IMGCODEC_PXM
"ppm",
- "ras"
+#endif
+#ifdef HAVE_IMGCODEC_SUNRASTER
+ "ras",
+#endif
};
INSTANTIATE_TEST_CASE_P(imgcodecs, Imgcodecs_Image, testing::ValuesIn(exts));