mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
197 lines
6.3 KiB
197 lines
6.3 KiB
set(the_description "Image I/O") |
|
ocv_add_module(imgcodecs opencv_imgproc WRAP java objc python) |
|
|
|
# ---------------------------------------------------------------------------- |
|
# CMake file for imgcodecs. See root CMakeLists.txt |
|
# Some parts taken from version of Hartmut Seichter, HIT Lab NZ. |
|
# Jose Luis Blanco, 2008 |
|
# ---------------------------------------------------------------------------- |
|
|
|
ocv_clear_vars(GRFMT_LIBS) |
|
|
|
if(HAVE_WINRT_CX AND NOT WINRT) |
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") |
|
endif() |
|
|
|
if (HAVE_AVIF) |
|
ocv_include_directories(${AVIF_INCLUDE_DIR}) |
|
list(APPEND GRFMT_LIBS ${AVIF_LIBRARY}) |
|
endif() |
|
|
|
if(HAVE_JPEG) |
|
ocv_include_directories(${JPEG_INCLUDE_DIR} ${${JPEG_LIBRARY}_BINARY_DIR}) |
|
list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES}) |
|
endif() |
|
|
|
if(HAVE_WEBP) |
|
add_definitions(-DHAVE_WEBP) |
|
ocv_include_directories(${WEBP_INCLUDE_DIR}) |
|
list(APPEND GRFMT_LIBS ${WEBP_LIBRARIES}) |
|
endif() |
|
|
|
if(HAVE_SPNG) |
|
add_definitions(${SPNG_DEFINITIONS}) |
|
ocv_include_directories(${SPNG_INCLUDE_DIR}) |
|
list(APPEND GRFMT_LIBS ${SPNG_LIBRARY}) |
|
endif() |
|
|
|
if(HAVE_PNG) |
|
add_definitions(${PNG_DEFINITIONS}) |
|
ocv_include_directories(${PNG_INCLUDE_DIR}) |
|
list(APPEND GRFMT_LIBS ${PNG_LIBRARIES}) |
|
endif() |
|
|
|
if(HAVE_GDCM) |
|
ocv_include_directories(${GDCM_INCLUDE_DIRS}) |
|
list(APPEND GRFMT_LIBS ${GDCM_LIBRARIES}) |
|
endif() |
|
|
|
if(HAVE_TIFF) |
|
ocv_include_directories(${TIFF_INCLUDE_DIR}) |
|
list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES}) |
|
endif() |
|
|
|
if(HAVE_OPENJPEG) |
|
ocv_include_directories(${OPENJPEG_INCLUDE_DIRS}) |
|
list(APPEND GRFMT_LIBS ${OPENJPEG_LIBRARIES}) |
|
endif() |
|
|
|
if(HAVE_JASPER) |
|
ocv_include_directories(${JASPER_INCLUDE_DIR}) |
|
list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES}) |
|
if(OPENCV_IO_FORCE_JASPER) |
|
add_definitions(-DOPENCV_IMGCODECS_FORCE_JASPER=1) |
|
else() |
|
message(STATUS "imgcodecs: Jasper codec is disabled in runtime. Details: https://github.com/opencv/opencv/issues/14058") |
|
endif() |
|
endif() |
|
|
|
if(HAVE_OPENEXR) |
|
include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS}) |
|
list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES}) |
|
if(OPENCV_IO_FORCE_OPENEXR |
|
OR NOT BUILD_OPENEXR # external OpenEXR versions are not disabled |
|
) |
|
add_definitions(-DOPENCV_IMGCODECS_USE_OPENEXR=1) |
|
else() |
|
message(STATUS "imgcodecs: OpenEXR codec is disabled in runtime. Details: https://github.com/opencv/opencv/issues/21326") |
|
endif() |
|
endif() |
|
|
|
if(HAVE_PNG OR HAVE_TIFF OR HAVE_OPENEXR OR HAVE_SPNG) |
|
ocv_include_directories(${ZLIB_INCLUDE_DIRS}) |
|
list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES}) |
|
endif() |
|
|
|
if(HAVE_GDAL) |
|
include_directories(SYSTEM ${GDAL_INCLUDE_DIR}) |
|
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() |
|
|
|
if (HAVE_IMGCODEC_PFM) |
|
add_definitions(-DHAVE_IMGCODEC_PFM) |
|
endif() |
|
|
|
file(GLOB grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.hpp) |
|
file(GLOB grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.cpp) |
|
|
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.hpp) |
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.cpp) |
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.hpp) |
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.cpp) |
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/exif.hpp) |
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/exif.cpp) |
|
|
|
source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs}) |
|
|
|
set(imgcodecs_hdrs |
|
${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp |
|
${CMAKE_CURRENT_LIST_DIR}/src/utils.hpp |
|
) |
|
|
|
set(imgcodecs_srcs |
|
${CMAKE_CURRENT_LIST_DIR}/src/loadsave.cpp |
|
${CMAKE_CURRENT_LIST_DIR}/src/utils.cpp |
|
) |
|
|
|
file(GLOB imgcodecs_ext_hdrs |
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" |
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" |
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h" |
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/legacy/*.h" |
|
) |
|
|
|
if(APPLE OR APPLE_FRAMEWORK) |
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/apple_conversions.h) |
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/apple_conversions.mm) |
|
endif() |
|
if(IOS OR XROS) |
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/ios_conversions.mm) |
|
list(APPEND IMGCODECS_LIBRARIES "-framework UIKit") |
|
endif() |
|
if(APPLE AND (NOT IOS) AND (NOT XROS)) |
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/macosx_conversions.mm) |
|
list(APPEND IMGCODECS_LIBRARIES "-framework AppKit") |
|
endif() |
|
if(APPLE_FRAMEWORK) |
|
list(APPEND IMGCODECS_LIBRARIES "-framework Accelerate" "-framework CoreGraphics" "-framework QuartzCore") |
|
endif() |
|
|
|
if(TRUE) |
|
# these variables are set by 'ocv_append_build_options(IMGCODECS ...)' |
|
foreach(P ${IMGCODECS_INCLUDE_DIRS}) |
|
ocv_include_directories(${P}) |
|
endforeach() |
|
|
|
foreach(P ${IMGCODECS_LIBRARY_DIRS}) |
|
link_directories(${P}) |
|
endforeach() |
|
endif() |
|
|
|
source_group("Src" FILES ${imgcodecs_srcs} ${imgcodecs_hdrs}) |
|
source_group("Include" FILES ${imgcodecs_ext_hdrs}) |
|
ocv_set_module_sources(HEADERS ${imgcodecs_ext_hdrs} SOURCES ${imgcodecs_srcs} ${imgcodecs_hdrs} ${grfmt_srcs} ${grfmt_hdrs}) |
|
ocv_module_include_directories() |
|
|
|
ocv_create_module(${GRFMT_LIBS} ${IMGCODECS_LIBRARIES}) |
|
|
|
macro(ocv_imgcodecs_configure_target) |
|
if(APPLE) |
|
add_apple_compiler_options(${the_module}) |
|
endif() |
|
|
|
if(MSVC AND NOT BUILD_SHARED_LIBS AND BUILD_WITH_STATIC_CRT) |
|
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG") |
|
endif() |
|
|
|
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) |
|
endmacro() |
|
|
|
if(NOT BUILD_opencv_world) |
|
ocv_imgcodecs_configure_target() |
|
endif() |
|
|
|
ocv_add_accuracy_tests() |
|
if(TARGET opencv_test_imgcodecs AND HAVE_JASPER AND "$ENV{OPENCV_IO_ENABLE_JASPER}") |
|
ocv_target_compile_definitions(opencv_test_imgcodecs PRIVATE OPENCV_IMGCODECS_ENABLE_JASPER_TESTS=1) |
|
endif() |
|
if(TARGET opencv_test_imgcodecs AND HAVE_OPENEXR AND "$ENV{OPENCV_IO_ENABLE_OPENEXR}") |
|
ocv_target_compile_definitions(opencv_test_imgcodecs PRIVATE OPENCV_IMGCODECS_ENABLE_OPENEXR_TESTS=1) |
|
endif() |
|
if(TARGET opencv_test_imgcodecs AND ((HAVE_PNG AND NOT (PNG_VERSION VERSION_LESS "1.6.31")) OR HAVE_SPNG)) |
|
# details: https://github.com/glennrp/libpng/commit/68cb0aaee3de6371b81a4613476d9b33e43e95b1 |
|
ocv_target_compile_definitions(opencv_test_imgcodecs PRIVATE OPENCV_IMGCODECS_PNG_WITH_EXIF=1) |
|
endif() |
|
ocv_add_perf_tests()
|
|
|