aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/opencv4
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/opencv4
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/opencv4')
-rw-r--r--vcpkg/ports/opencv4/0001-disable-downloading.patch12
-rw-r--r--vcpkg/ports/opencv4/0002-install-options.patch64
-rw-r--r--vcpkg/ports/opencv4/0003-force-package-requirements.patch142
-rw-r--r--vcpkg/ports/opencv4/0004-fix-eigen.patch11
-rw-r--r--vcpkg/ports/opencv4/0005-fix-policy-CMP0057.patch7
-rw-r--r--vcpkg/ports/opencv4/0006-fix-uwp.patch11
-rw-r--r--vcpkg/ports/opencv4/0007-contrib-fix-hdf5.patch28
-rw-r--r--vcpkg/ports/opencv4/0008-devendor-quirc.patch22
-rw-r--r--vcpkg/ports/opencv4/0009-fix-protobuf.patch26
-rw-r--r--vcpkg/ports/opencv4/0010-fix-uwp-tiff-imgcodecs.patch13
-rw-r--r--vcpkg/ports/opencv4/0011-remove-python2.patch24
-rw-r--r--vcpkg/ports/opencv4/0012-miss-openexr.patch12
-rw-r--r--vcpkg/ports/opencv4/0013-contrib-fix-ogre.patch8
-rw-r--r--vcpkg/ports/opencv4/0014-fix-cmake-in-list.patch13
-rw-r--r--vcpkg/ports/opencv4/0015-fix-freetype.patch11
-rw-r--r--vcpkg/ports/opencv4/0016-contrib-fix-freetype.patch16
-rw-r--r--vcpkg/ports/opencv4/0017-fix-flatbuffers.patch16
-rw-r--r--vcpkg/ports/opencv4/0018-contrib-fix-tesseract.patch11
-rw-r--r--vcpkg/ports/opencv4/0019-opencl-kernel.patch10
-rw-r--r--vcpkg/ports/opencv4/0020-fix-narrow-filesystem.diff13
-rw-r--r--vcpkg/ports/opencv4/0021-fix-qt-gen-def.patch13
-rw-r--r--vcpkg/ports/opencv4/portfile.cmake687
-rw-r--r--vcpkg/ports/opencv4/usage.in4
-rw-r--r--vcpkg/ports/opencv4/vcpkg.json506
24 files changed, 1680 insertions, 0 deletions
diff --git a/vcpkg/ports/opencv4/0001-disable-downloading.patch b/vcpkg/ports/opencv4/0001-disable-downloading.patch
new file mode 100644
index 0000000..b7865c5
--- /dev/null
+++ b/vcpkg/ports/opencv4/0001-disable-downloading.patch
@@ -0,0 +1,12 @@
+--- a/cmake/OpenCVDownload.cmake
++++ b/cmake/OpenCVDownload.cmake
+@@ -206,6 +206,9 @@ function(ocv_download)
+ # Download
+ if(NOT EXISTS "${CACHE_CANDIDATE}")
+ ocv_download_log("#cmake_download \"${CACHE_CANDIDATE}\" \"${DL_URL}\"")
++ string(REPLACE "${OPENCV_DOWNLOAD_PATH}/" "opencv-cache/" CACHE_SUBPATH "${CACHE_CANDIDATE}")
++ message(FATAL_ERROR " Downloads are not permitted during configure. Please pre-download the file \"${CACHE_CANDIDATE}\":\n \n vcpkg_download_distfile(OCV_DOWNLOAD\n URLS \"${DL_URL}\"\n FILENAME \"${CACHE_SUBPATH}\"\n SHA512 0\n )")
++
+ foreach(try ${OPENCV_DOWNLOAD_TRIES_LIST})
+ ocv_download_log("#try ${try}")
+ file(DOWNLOAD "${DL_URL}" "${CACHE_CANDIDATE}"
diff --git a/vcpkg/ports/opencv4/0002-install-options.patch b/vcpkg/ports/opencv4/0002-install-options.patch
new file mode 100644
index 0000000..7e6d585
--- /dev/null
+++ b/vcpkg/ports/opencv4/0002-install-options.patch
@@ -0,0 +1,64 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -638,7 +638,7 @@ set(OPENCV_EXTRA_MODULES_PATH "" CACHE PATH "Where to look for additional OpenCV
+ ocv_cmake_hook(POST_CMAKE_BUILD_OPTIONS)
+
+ # --- Python Support ---
+-if(NOT IOS AND NOT XROS)
++if(WITH_PYTHON)
+ include(cmake/OpenCVDetectPython.cmake)
+ endif()
+
+@@ -730,6 +730,7 @@ endif()
+ # ----------------------------------------------------------------------------
+ # CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
+ # ----------------------------------------------------------------------------
++find_package(PkgConfig REQUIRED)
+ if(UNIX OR MINGW)
+ if(NOT APPLE_FRAMEWORK OR OPENCV_ENABLE_PKG_CONFIG)
+ if(CMAKE_CROSSCOMPILING AND NOT DEFINED ENV{PKG_CONFIG_LIBDIR} AND NOT DEFINED ENV{PKG_CONFIG_SYSROOT_DIR}
+--- a/cmake/OpenCVCompilerOptions.cmake
++++ b/cmake/OpenCVCompilerOptions.cmake
+@@ -306,7 +306,6 @@ if(MSVC)
+ #endif()
+
+ if(BUILD_WITH_DEBUG_INFO)
+- set(OPENCV_EXTRA_FLAGS_RELEASE "${OPENCV_EXTRA_FLAGS_RELEASE} /Zi")
+ set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug")
+ set(OPENCV_EXTRA_SHARED_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_SHARED_LINKER_FLAGS_RELEASE} /debug")
+ set(OPENCV_EXTRA_MODULE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_MODULE_LINKER_FLAGS_RELEASE} /debug")
+--- a/cmake/OpenCVGenConfig.cmake
++++ b/cmake/OpenCVGenConfig.cmake
+@@ -118,18 +118,18 @@ function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME)
+ endif()
+ endfunction()
+
+-if((CMAKE_HOST_SYSTEM_NAME MATCHES "Linux" OR UNIX) AND NOT ANDROID)
++if(TRUE)
+ ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "" "")
+ endif()
+
+-if(ANDROID)
++if(FALSE)
+ ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "abi-${ANDROID_NDK_ABI_NAME}" "OpenCVConfig.root-ANDROID.cmake.in")
+ endif()
+
+ # --------------------------------------------------------------------------------------------
+ # Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages
+ # --------------------------------------------------------------------------------------------
+-if(WIN32)
++if(FALSE)
+ if(CMAKE_HOST_SYSTEM_NAME MATCHES Windows AND NOT OPENCV_SKIP_CMAKE_ROOT_CONFIG)
+ ocv_gen_config("${CMAKE_BINARY_DIR}/win-install"
+ "${OPENCV_INSTALL_BINARIES_PREFIX}${OPENCV_INSTALL_BINARIES_SUFFIX}"
+--- a/data/CMakeLists.txt
++++ b/data/CMakeLists.txt
+@@ -1,8 +1,6 @@
+ file(GLOB HAAR_CASCADES haarcascades/*.xml)
+ file(GLOB LBP_CASCADES lbpcascades/*.xml)
+
+-install(FILES ${HAAR_CASCADES} DESTINATION ${OPENCV_OTHER_INSTALL_PATH}/haarcascades COMPONENT libs)
+-install(FILES ${LBP_CASCADES} DESTINATION ${OPENCV_OTHER_INSTALL_PATH}/lbpcascades COMPONENT libs)
+
+ if(INSTALL_TESTS AND OPENCV_TEST_DATA_PATH)
+ install(DIRECTORY "${OPENCV_TEST_DATA_PATH}/" DESTINATION "${OPENCV_TEST_DATA_INSTALL_PATH}" COMPONENT "tests")
diff --git a/vcpkg/ports/opencv4/0003-force-package-requirements.patch b/vcpkg/ports/opencv4/0003-force-package-requirements.patch
new file mode 100644
index 0000000..12c55a4
--- /dev/null
+++ b/vcpkg/ports/opencv4/0003-force-package-requirements.patch
@@ -0,0 +1,142 @@
+--- a/cmake/OpenCVFindLibsGrfmt.cmake
++++ b/cmake/OpenCVFindLibsGrfmt.cmake
+@@ -16,6 +16,7 @@ if(WITH_ZLIB_NG)
+
+ set(HAVE_ZLIB_NG YES)
+ else()
++ find_package(ZLIB "${MIN_VER_ZLIB}" REQUIRED)
+ if(BUILD_ZLIB)
+ ocv_clear_vars(ZLIB_FOUND)
+ else()
+@@ -28,8 +29,6 @@ else()
+ set(ZLIB_FOUND TRUE)
+ set(ZLIB_LIBRARY z)
+ set(ZLIB_LIBRARIES z)
+- else()
+- find_package(ZLIB "${MIN_VER_ZLIB}")
+ endif()
+ if(ANDROID)
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ${_zlib_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
+@@ -61,7 +60,7 @@ endif()
+
+ if(WITH_AVIF)
+ ocv_clear_internal_cache_vars(AVIF_LIBRARY AVIF_INCLUDE_DIR)
+- include(cmake/OpenCVFindAVIF.cmake)
++ find_package(libavif REQUIRED)
+ if(AVIF_FOUND)
+ set(HAVE_AVIF 1)
+ endif()
+@@ -78,7 +77,7 @@ if(WITH_JPEG)
+ set(JPEG_LIBRARIES jpeg)
+ set(JPEG_FOUND TRUE)
+ else()
+- include(FindJPEG)
++ find_package(JPEG REQUIRED)
+ endif()
+ endif()
+
+@@ -130,7 +129,7 @@ if(WITH_TIFF)
+ set(TIFF_LIBRARIES tiff)
+ set(TIFF_FOUND TRUE)
+ else()
+- include(FindTIFF)
++ find_package(TIFF REQUIRED)
+ endif()
+ if(TIFF_FOUND)
+ ocv_parse_header("${TIFF_INCLUDE_DIR}/tiff.h" TIFF_VERSION_LINES TIFF_VERSION_CLASSIC TIFF_VERSION_BIG TIFF_VERSION TIFF_BIGTIFF_VERSION)
+@@ -175,7 +174,7 @@ if(WITH_WEBP)
+ ocv_clear_vars(WEBP_FOUND WEBP_LIBRARY WEBP_LIBRARIES WEBP_INCLUDE_DIR)
+ else()
+ ocv_clear_internal_cache_vars(WEBP_LIBRARY WEBP_INCLUDE_DIR)
+- include(cmake/OpenCVFindWebP.cmake)
++ find_package(WEBP NAMES WebP REQUIRED)
+ if(WEBP_FOUND)
+ set(HAVE_WEBP 1)
+ endif()
+@@ -234,6 +233,8 @@ if(WITH_JPEGXL)
+ if(JPEGXL_FOUND)
+ set(HAVE_JPEGXL YES)
+ message(STATUS "Found system JPEG-XL: ver ${JPEGXL_VERSION}")
++ else()
++ message(FATAL_ERROR "JPEG-XL is required but not found. Please install it.")
+ endif()
+ endif()
+
+@@ -242,7 +243,7 @@ if(WITH_OPENJPEG)
+ if(BUILD_OPENJPEG)
+ ocv_clear_vars(OpenJPEG_FOUND)
+ else()
+- find_package(OpenJPEG QUIET)
++ find_package(OpenJPEG REQUIRED)
+ endif()
+
+ if(NOT OpenJPEG_FOUND OR OPENJPEG_MAJOR_VERSION LESS 2)
+@@ -271,7 +272,7 @@ if(WITH_JASPER AND NOT HAVE_OPENJPEG)
+ if(BUILD_JASPER)
+ ocv_clear_vars(JASPER_FOUND)
+ else()
+- include(FindJasper)
++ find_package(Jasper REQUIRED)
+ endif()
+
+ if(NOT JASPER_FOUND)
+@@ -297,9 +298,9 @@ if(WITH_SPNG)
+ # CMakeConfig bug in SPNG, include is missing there in version 0.7.4 and older
+ # See https://github.com/randy408/libspng/pull/264
+ include(CMakeFindDependencyMacro)
+- find_package(SPNG QUIET)
++ find_package(SPNG REQUIRED)
+ if(SPNG_FOUND)
+- set(SPNG_LIBRARY "spng::spng" CACHE INTERNAL "")
++ set(SPNG_LIBRARY "$<IF:$<TARGET_EXISTS:spng::spng>,spng::spng,spng::spng_static>" CACHE INTERNAL "")
+ set(SPNG_LIBRARIES ${SPNG_LIBRARY})
+ else()
+ if(PkgConfig_FOUND)
+@@ -331,7 +332,7 @@ if(NOT HAVE_SPNG AND WITH_PNG)
+ ocv_clear_vars(PNG_FOUND)
+ else()
+ ocv_clear_internal_cache_vars(PNG_LIBRARY PNG_INCLUDE_DIR)
+- find_package(PNG QUIET)
++ find_package(PNG REQUIRED)
+ endif()
+
+ if(NOT PNG_FOUND)
+@@ -354,7 +355,8 @@ if(WITH_OPENEXR)
+ ocv_clear_vars(HAVE_OPENEXR)
+ if(NOT BUILD_OPENEXR)
+ ocv_clear_internal_cache_vars(OPENEXR_INCLUDE_PATHS OPENEXR_LIBRARIES OPENEXR_ILMIMF_LIBRARY OPENEXR_VERSION)
+- include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenEXR.cmake")
++ find_package(OpenEXR CONFIG REQUIRED)
++ set(OPENEXR_FOUND TRUE)
+ endif()
+
+ if(OPENEXR_FOUND)
+@@ -374,7 +376,7 @@ endif()
+
+ # --- GDAL (optional) ---
+ if(WITH_GDAL)
+- find_package(GDAL QUIET)
++ find_package(GDAL REQUIRED)
+
+ if(NOT GDAL_FOUND)
+ set(HAVE_GDAL NO)
+@@ -386,7 +388,7 @@ if(WITH_GDAL)
+ endif()
+
+ if(WITH_GDCM)
+- find_package(GDCM QUIET)
++ find_package(GDCM REQUIRED)
+ if(NOT GDCM_FOUND)
+ set(HAVE_GDCM NO)
+ ocv_clear_vars(GDCM_VERSION GDCM_LIBRARIES)
+--- a/modules/imgcodecs/CMakeLists.txt
++++ b/modules/imgcodecs/CMakeLists.txt
+@@ -30,7 +30,7 @@ endif()
+
+ if(HAVE_WEBP)
+ add_definitions(-DHAVE_WEBP)
+- ocv_include_directories(${WEBP_INCLUDE_DIR})
++ ocv_include_directories(${WEBP_INCLUDE_DIRS})
+ list(APPEND GRFMT_LIBS ${WEBP_LIBRARIES})
+ endif()
+
diff --git a/vcpkg/ports/opencv4/0004-fix-eigen.patch b/vcpkg/ports/opencv4/0004-fix-eigen.patch
new file mode 100644
index 0000000..4b0229b
--- /dev/null
+++ b/vcpkg/ports/opencv4/0004-fix-eigen.patch
@@ -0,0 +1,11 @@
+--- a/cmake/OpenCVFindLibsPerf.cmake
++++ b/cmake/OpenCVFindLibsPerf.cmake
+@@ -59,7 +59,7 @@ if(WITH_EIGEN AND NOT HAVE_EIGEN)
+ OR NOT (CMAKE_VERSION VERSION_LESS "3.0.0") # Eigen3Targets.cmake required CMake 3.0.0+
+ ) AND NOT OPENCV_SKIP_EIGEN_FIND_PACKAGE_CONFIG
+ )
+- find_package(Eigen3 CONFIG QUIET) # Ceres 2.0.0 CMake scripts doesn't work with CMake's FindEigen3.cmake module (due to missing EIGEN3_VERSION_STRING)
++ find_package(Eigen3 CONFIG REQUIRED) # Ceres 2.0.0 CMake scripts doesn't work with CMake's FindEigen3.cmake module (due to missing EIGEN3_VERSION_STRING)
+ endif()
+ if(NOT Eigen3_FOUND)
+ find_package(Eigen3 QUIET)
diff --git a/vcpkg/ports/opencv4/0005-fix-policy-CMP0057.patch b/vcpkg/ports/opencv4/0005-fix-policy-CMP0057.patch
new file mode 100644
index 0000000..937a50b
--- /dev/null
+++ b/vcpkg/ports/opencv4/0005-fix-policy-CMP0057.patch
@@ -0,0 +1,7 @@
+--- a/modules/videoio/CMakeLists.txt
++++ b/modules/videoio/CMakeLists.txt
+@@ -1,3 +1,4 @@
++cmake_minimum_required(VERSION 3.5)
+ set(VIDEOIO_ENABLE_PLUGINS_DEFAULT ON)
+ if(EMSCRIPTEN OR IOS OR XROS OR WINRT)
+ set(VIDEOIO_ENABLE_PLUGINS_DEFAULT OFF)
diff --git a/vcpkg/ports/opencv4/0006-fix-uwp.patch b/vcpkg/ports/opencv4/0006-fix-uwp.patch
new file mode 100644
index 0000000..2185fb4
--- /dev/null
+++ b/vcpkg/ports/opencv4/0006-fix-uwp.patch
@@ -0,0 +1,11 @@
+--- a/cmake/OpenCVModule.cmake
++++ b/cmake/OpenCVModule.cmake
+@@ -1249,7 +1249,7 @@ function(ocv_add_perf_tests)
+ set_target_properties(${the_target} PROPERTIES FOLDER "tests performance")
+ endif()
+
+- if(WINRT)
++ if(WINRT AND BUILD_TESTS)
+ # removing APPCONTAINER from tests to run from console
+ # look for detailed description inside of ocv_create_module macro above
+ add_custom_command(TARGET "opencv_perf_${name}"
diff --git a/vcpkg/ports/opencv4/0007-contrib-fix-hdf5.patch b/vcpkg/ports/opencv4/0007-contrib-fix-hdf5.patch
new file mode 100644
index 0000000..8e7e154
--- /dev/null
+++ b/vcpkg/ports/opencv4/0007-contrib-fix-hdf5.patch
@@ -0,0 +1,28 @@
+--- a/modules/hdf/CMakeLists.txt
++++ b/modules/hdf/CMakeLists.txt
+@@ -1,25 +1,8 @@
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR})
+
+-if(WIN32)
+- # windows cmake internal lookups are broken for now
+- # will lookup for headers and shared libs given HDF_DIR env
+- find_path(HDF5_INCLUDE_DIRS hdf5.h HINTS "$ENV{HDF5_DIR}\\..\\include")
+- find_library(HDF5_C_LIBRARY NAMES hdf5 HINTS "$ENV{HDF5_DIR}\\..\\lib")
+- if(HDF5_INCLUDE_DIRS AND HDF5_C_LIBRARY)
+- set(HDF5_FOUND "YES")
+- set(HDF5_LIBRARIES ${HDF5_C_LIBRARY})
+- mark_as_advanced(HDF5_LIBRARIES)
+- mark_as_advanced(HDF5_C_LIBRARY)
+- mark_as_advanced(HDF5_INCLUDE_DIRS)
+- add_definitions(-DH5_BUILT_AS_DYNAMIC_LIB -D_HDF5USEDLL_)
+- else()
+- set(HDF5_FOUND "NO")
+- endif()
+-else()
+ if(NOT CMAKE_CROSSCOMPILING) # iOS build should not reuse OSX package
+ find_package(HDF5)
+ endif()
+-endif()
+
+ if(NOT HDF5_FOUND)
+ ocv_module_disable(hdf) # no return
diff --git a/vcpkg/ports/opencv4/0008-devendor-quirc.patch b/vcpkg/ports/opencv4/0008-devendor-quirc.patch
new file mode 100644
index 0000000..43945ea
--- /dev/null
+++ b/vcpkg/ports/opencv4/0008-devendor-quirc.patch
@@ -0,0 +1,22 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -905,7 +905,7 @@ if(WITH_OPENVX)
+ endif()
+
+ if(WITH_QUIRC)
+- add_subdirectory(3rdparty/quirc)
++ find_package(quirc CONFIG REQUIRED)
+ set(HAVE_QUIRC TRUE)
+ endif()
+
+--- a/modules/objdetect/CMakeLists.txt
++++ b/modules/objdetect/CMakeLists.txt
+@@ -13,7 +13,5 @@ ocv_define_module(objdetect
+ )
+
+ if(HAVE_QUIRC)
+- get_property(QUIRC_INCLUDE GLOBAL PROPERTY QUIRC_INCLUDE_DIR)
+- ocv_include_directories(${QUIRC_INCLUDE})
+- ocv_target_link_libraries(${the_module} quirc)
++ ocv_target_link_libraries(${the_module} quirc::quirc)
+ endif()
diff --git a/vcpkg/ports/opencv4/0009-fix-protobuf.patch b/vcpkg/ports/opencv4/0009-fix-protobuf.patch
new file mode 100644
index 0000000..bde8b2e
--- /dev/null
+++ b/vcpkg/ports/opencv4/0009-fix-protobuf.patch
@@ -0,0 +1,26 @@
+--- a/cmake/OpenCVFindProtobuf.cmake
++++ b/cmake/OpenCVFindProtobuf.cmake
+@@ -34,7 +34,7 @@ else()
+ set(protobuf_MODULE_COMPATIBLE ON)
+
+ unset(Protobuf_VERSION CACHE)
+- find_package(Protobuf QUIET CONFIG)
++ find_package(Protobuf CONFIG REQUIRED)
+ if(NOT Protobuf_FOUND)
+ find_package(Protobuf QUIET)
+ endif()
+@@ -97,6 +97,7 @@ if(HAVE_PROTOBUF)
+ unset( __location)
+ if(TARGET "${Protobuf_LIBRARIES}")
+ get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION_RELEASE)
++ get_target_property(__location_debug "${Protobuf_LIBRARIES}" IMPORTED_LOCATION_DEBUG)
+ if(NOT __location)
+ get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION)
+ endif()
+@@ -112,5 +113,5 @@ if(HAVE_PROTOBUF)
+ endif()
+ list(APPEND CUSTOM_STATUS_protobuf " Protobuf:"
+ BUILD_PROTOBUF THEN "build (${Protobuf_VERSION})"
+- ELSE "${__location} (${Protobuf_VERSION})")
++ ELSE "optimized ${__location} debug ${__location_debug} ; version (${Protobuf_VERSION})")
+ endif()
diff --git a/vcpkg/ports/opencv4/0010-fix-uwp-tiff-imgcodecs.patch b/vcpkg/ports/opencv4/0010-fix-uwp-tiff-imgcodecs.patch
new file mode 100644
index 0000000..0bd3d70
--- /dev/null
+++ b/vcpkg/ports/opencv4/0010-fix-uwp-tiff-imgcodecs.patch
@@ -0,0 +1,13 @@
+--- a/modules/imgcodecs/CMakeLists.txt
++++ b/modules/imgcodecs/CMakeLists.txt
+@@ -9,6 +9,10 @@ ocv_add_module(imgcodecs opencv_imgproc WRAP java objc python)
+
+ ocv_clear_vars(GRFMT_LIBS)
+
++if(MSVC)
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996")
++endif()
++
+ if(HAVE_WINRT_CX AND NOT WINRT)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW")
+ endif()
diff --git a/vcpkg/ports/opencv4/0011-remove-python2.patch b/vcpkg/ports/opencv4/0011-remove-python2.patch
new file mode 100644
index 0000000..e0237d7
--- /dev/null
+++ b/vcpkg/ports/opencv4/0011-remove-python2.patch
@@ -0,0 +1,24 @@
+--- a/cmake/OpenCVDetectPython.cmake
++++ b/cmake/OpenCVDetectPython.cmake
+@@ -268,21 +268,6 @@ if(OPENCV_PYTHON_SKIP_DETECTION)
+ return()
+ endif()
+
+-ocv_check_environment_variables(OPENCV_ENABLE_PYTHON2)
+-ocv_check_environment_variables(PYTHON2_EXECUTABLE)
+-if((OPENCV_ENABLE_PYTHON2 OR PYTHON2_EXECUTABLE OR BUILD_opencv_python2)
+- AND NOT OPENCV_PYTHON2_SKIP_DETECTION
+-)
+- find_python("" "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
+- PYTHON2INTERP_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING
+- PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND
+- PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY
+- PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH
+- PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH
+- PYTHON2_NUMPY_INCLUDE_DIRS PYTHON2_NUMPY_VERSION)
+-endif()
+-
+-option(OPENCV_PYTHON3_VERSION "Python3 version" "")
+ find_python("${OPENCV_PYTHON3_VERSION}" "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR
+ PYTHON3INTERP_FOUND PYTHON3_EXECUTABLE PYTHON3_VERSION_STRING
+ PYTHON3_VERSION_MAJOR PYTHON3_VERSION_MINOR PYTHON3LIBS_FOUND
diff --git a/vcpkg/ports/opencv4/0012-miss-openexr.patch b/vcpkg/ports/opencv4/0012-miss-openexr.patch
new file mode 100644
index 0000000..943a621
--- /dev/null
+++ b/vcpkg/ports/opencv4/0012-miss-openexr.patch
@@ -0,0 +1,12 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -801,6 +801,9 @@ include(cmake/OpenCVFindLibsPerf.cmake)
+ include(cmake/OpenCVFindLAPACK.cmake)
+ include(cmake/OpenCVFindProtobuf.cmake)
+ include(cmake/OpenCVDetectFlatbuffers.cmake)
++if(WITH_OPENEXR)
++ include(cmake/OpenCVFindOpenEXR.cmake)
++endif()
+ if(WITH_TIMVX)
+ include(cmake/OpenCVFindTIMVX.cmake)
+ endif()
diff --git a/vcpkg/ports/opencv4/0013-contrib-fix-ogre.patch b/vcpkg/ports/opencv4/0013-contrib-fix-ogre.patch
new file mode 100644
index 0000000..3e3e6c7
--- /dev/null
+++ b/vcpkg/ports/opencv4/0013-contrib-fix-ogre.patch
@@ -0,0 +1,8 @@
+--- a/modules/ovis/CMakeLists.txt
++++ b/modules/ovis/CMakeLists.txt
+@@ -27,4 +27,5 @@ ocv_create_module()
+ ocv_add_samples(opencv_objdetect opencv_aruco)
+
+ ocv_warnings_disable(CMAKE_CXX_FLAGS -Wunused-parameter)
++string(REPLACE "OgreGLSupportStatic" "OgreGLSupport" OGRE_LIBRARIES "${OGRE_LIBRARIES}")
+ ocv_target_link_libraries(${the_module} ${OGRE_LIBRARIES})
diff --git a/vcpkg/ports/opencv4/0014-fix-cmake-in-list.patch b/vcpkg/ports/opencv4/0014-fix-cmake-in-list.patch
new file mode 100644
index 0000000..7d7b1b2
--- /dev/null
+++ b/vcpkg/ports/opencv4/0014-fix-cmake-in-list.patch
@@ -0,0 +1,13 @@
+--- a/cmake/OpenCVUtils.cmake
++++ b/cmake/OpenCVUtils.cmake
+@@ -1667,8 +1667,8 @@ function(ocv_install_used_external_targets)
+ if(NOT BUILD_SHARED_LIBS
+ AND NOT (CMAKE_VERSION VERSION_LESS "3.13.0") # upgrade CMake: https://gitlab.kitware.com/cmake/cmake/-/merge_requests/2152
+ )
+- foreach(tgt in ${ARGN})
+- if(tgt MATCHES "^ocv\.3rdparty\.")
++ foreach(tgt ${ARGN})
++ if(tgt MATCHES "^ocv[.]3rdparty[.]")
+ list(FIND __OPENCV_EXPORTED_EXTERNAL_TARGETS "${tgt}" _found)
+ if(_found EQUAL -1) # don't export target twice
+ install(TARGETS ${tgt} EXPORT OpenCVModules)
diff --git a/vcpkg/ports/opencv4/0015-fix-freetype.patch b/vcpkg/ports/opencv4/0015-fix-freetype.patch
new file mode 100644
index 0000000..6eeafe7
--- /dev/null
+++ b/vcpkg/ports/opencv4/0015-fix-freetype.patch
@@ -0,0 +1,11 @@
+--- a/modules/gapi/cmake/init.cmake
++++ b/modules/gapi/cmake/init.cmake
+@@ -21,7 +21,7 @@ if(NOT TARGET ade)
+ endif()
+
+ if(WITH_FREETYPE)
+- ocv_check_modules(FREETYPE freetype2)
++ find_package(Freetype REQUIRED)
+ if (FREETYPE_FOUND)
+ set(HAVE_FREETYPE TRUE)
+ endif()
diff --git a/vcpkg/ports/opencv4/0016-contrib-fix-freetype.patch b/vcpkg/ports/opencv4/0016-contrib-fix-freetype.patch
new file mode 100644
index 0000000..48f4eeb
--- /dev/null
+++ b/vcpkg/ports/opencv4/0016-contrib-fix-freetype.patch
@@ -0,0 +1,16 @@
+--- a/modules/freetype/CMakeLists.txt
++++ b/modules/freetype/CMakeLists.txt
+@@ -3,8 +3,11 @@ if(APPLE_FRAMEWORK)
+ ocv_module_disable(freetype)
+ endif()
+
+-ocv_check_modules(FREETYPE freetype2)
+-ocv_check_modules(HARFBUZZ harfbuzz)
++if(WITH_FREETYPE)
++ find_package(Freetype REQUIRED)
++ find_package(HARFBUZZ NAMES harfbuzz REQUIRED)
++ set(HARFBUZZ_LIBRARIES harfbuzz::harfbuzz)
++endif()
+
+ if(OPENCV_INITIAL_PASS)
+ if(NOT FREETYPE_FOUND)
diff --git a/vcpkg/ports/opencv4/0017-fix-flatbuffers.patch b/vcpkg/ports/opencv4/0017-fix-flatbuffers.patch
new file mode 100644
index 0000000..6516a58
--- /dev/null
+++ b/vcpkg/ports/opencv4/0017-fix-flatbuffers.patch
@@ -0,0 +1,16 @@
+--- a/cmake/OpenCVDetectFlatbuffers.cmake
++++ b/cmake/OpenCVDetectFlatbuffers.cmake
+@@ -1,9 +1,9 @@
+ if(WITH_FLATBUFFERS)
+ set(HAVE_FLATBUFFERS 1)
+- set(flatbuffers_VERSION "23.5.9")
+- ocv_install_3rdparty_licenses(flatbuffers "${OpenCV_SOURCE_DIR}/3rdparty/flatbuffers/LICENSE.txt")
+- ocv_add_external_target(flatbuffers "${OpenCV_SOURCE_DIR}/3rdparty/flatbuffers/include" "" "HAVE_FLATBUFFERS=1")
+- set(CUSTOM_STATUS_flatbuffers " Flatbuffers:" "builtin/3rdparty (${flatbuffers_VERSION})")
++ set(flatbuffers_VERSION "23.5.26")
++ find_path(FLATBUFFERS_INCLUDE_DIR flatbuffers.h PATH_SUFFIXES flatbuffers)
++ get_filename_component(FLATBUFFERS_INCLUDE_DIR "${FLATBUFFERS_INCLUDE_DIR}" PATH)
++ ocv_add_external_target(flatbuffers "${FLATBUFFERS_INCLUDE_DIR}" "" "HAVE_FLATBUFFERS=1")
+ endif()
+
+ if(WITH_FLATBUFFERS OR HAVE_FLATBUFFERS)
diff --git a/vcpkg/ports/opencv4/0018-contrib-fix-tesseract.patch b/vcpkg/ports/opencv4/0018-contrib-fix-tesseract.patch
new file mode 100644
index 0000000..6a8bc7a
--- /dev/null
+++ b/vcpkg/ports/opencv4/0018-contrib-fix-tesseract.patch
@@ -0,0 +1,11 @@
+--- a/modules/text/cmake/init.cmake
++++ b/modules/text/cmake/init.cmake
+@@ -4,6 +4,8 @@ OCV_OPTION(WITH_TESSERACT "Include Tesseract OCR library support" (NOT CMAKE_CRO
+ if(NOT HAVE_TESSERACT
+ AND (WITH_TESSERACT OR OPENCV_FIND_TESSERACT)
+ )
++ find_package(Tesseract CONFIG REQUIRED)
++ set(Tesseract_LIBRARIES Tesseract::libtesseract)
+ if(NOT Tesseract_FOUND)
+ find_package(Tesseract QUIET) # Prefer CMake's standard locations (including Tesseract_DIR)
+ endif()
diff --git a/vcpkg/ports/opencv4/0019-opencl-kernel.patch b/vcpkg/ports/opencv4/0019-opencl-kernel.patch
new file mode 100644
index 0000000..61a4028
--- /dev/null
+++ b/vcpkg/ports/opencv4/0019-opencl-kernel.patch
@@ -0,0 +1,10 @@
+--- a/cmake/OpenCVModule.cmake
++++ b/cmake/OpenCVModule.cmake
+@@ -869,6 +869,7 @@ macro(ocv_glob_module_sources)
+ set(OCL_NAME opencl_kernels_${name})
+ add_custom_command(
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" # don't add .hpp file here to optimize build process
++ "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.hpp" # in reality vcpkg needs them
+ COMMAND ${CMAKE_COMMAND} "-DMODULE_NAME=${name}" "-DCL_DIR=${CMAKE_CURRENT_LIST_DIR}/src/opencl" "-DOUTPUT=${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake"
+ DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake"
+ COMMENT "Processing OpenCL kernels (${name})"
diff --git a/vcpkg/ports/opencv4/0020-fix-narrow-filesystem.diff b/vcpkg/ports/opencv4/0020-fix-narrow-filesystem.diff
new file mode 100644
index 0000000..b359717
--- /dev/null
+++ b/vcpkg/ports/opencv4/0020-fix-narrow-filesystem.diff
@@ -0,0 +1,13 @@
+diff --git a/modules/core/src/utils/filesystem.cpp b/modules/core/src/utils/filesystem.cpp
+index 0a44d48..2d609fd 100644
+--- a/modules/core/src/utils/filesystem.cpp
++++ b/modules/core/src/utils/filesystem.cpp
+@@ -439,7 +439,7 @@ cv::String getCacheDirectory(const char* sub_directory_name, const char* configu
+ cv::String default_cache_path;
+ #ifdef _WIN32
+ char tmp_path_buf[MAX_PATH+1] = {0};
+- DWORD res = GetTempPath(MAX_PATH, tmp_path_buf);
++ DWORD res = GetTempPathA(MAX_PATH, tmp_path_buf);
+ if (res > 0 && res <= MAX_PATH)
+ {
+ default_cache_path = tmp_path_buf;
diff --git a/vcpkg/ports/opencv4/0021-fix-qt-gen-def.patch b/vcpkg/ports/opencv4/0021-fix-qt-gen-def.patch
new file mode 100644
index 0000000..ee4124f
--- /dev/null
+++ b/vcpkg/ports/opencv4/0021-fix-qt-gen-def.patch
@@ -0,0 +1,13 @@
+diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt
+index f0a668e..6fafa33 100644
+--- a/modules/highgui/CMakeLists.txt
++++ b/modules/highgui/CMakeLists.txt
+@@ -125,8 +125,6 @@ elseif(HAVE_QT)
+ endif()
+
+ foreach(dt_dep ${qt_deps})
+- add_definitions(${Qt${QT_VERSION_MAJOR}${dt_dep}_DEFINITIONS})
+- include_directories(${Qt${QT_VERSION_MAJOR}${dt_dep}_INCLUDE_DIRS})
+ list(APPEND HIGHGUI_LIBRARIES ${Qt${QT_VERSION_MAJOR}${dt_dep}_LIBRARIES})
+ endforeach()
+ else()
diff --git a/vcpkg/ports/opencv4/portfile.cmake b/vcpkg/ports/opencv4/portfile.cmake
new file mode 100644
index 0000000..2c52a4c
--- /dev/null
+++ b/vcpkg/ports/opencv4/portfile.cmake
@@ -0,0 +1,687 @@
+set(USE_QT_VERSION "6")
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO opencv/opencv
+ REF "${VERSION}"
+ SHA512 3b6e0da8169449944715de9e66380977791069a1d8288534ec768eaa2fb68533821fd8e06eac925a26656baf42185258b13aa80579e1e9be3ebc18fcea66f24d
+ HEAD_REF master
+ PATCHES
+ 0001-disable-downloading.patch
+ 0002-install-options.patch
+ 0003-force-package-requirements.patch
+ 0004-fix-eigen.patch
+ 0005-fix-policy-CMP0057.patch
+ 0006-fix-uwp.patch
+ 0008-devendor-quirc.patch
+ 0009-fix-protobuf.patch
+ 0010-fix-uwp-tiff-imgcodecs.patch
+ 0011-remove-python2.patch
+ 0012-miss-openexr.patch
+ 0014-fix-cmake-in-list.patch
+ 0015-fix-freetype.patch
+ 0017-fix-flatbuffers.patch
+ 0019-opencl-kernel.patch
+ 0020-fix-narrow-filesystem.diff
+ 0021-fix-qt-gen-def.patch
+)
+
+vcpkg_find_acquire_program(PKGCONFIG)
+set(ENV{PKG_CONFIG} "${PKGCONFIG}")
+vcpkg_host_path_list(APPEND ENV{PKG_CONFIG_PATH} "${CURRENT_INSTALLED_DIR}/lib/pkgconfig")
+
+# Disallow accidental build of vendored copies
+file(REMOVE_RECURSE "${SOURCE_PATH}/3rdparty/openexr")
+file(REMOVE_RECURSE "${SOURCE_PATH}/3rdparty/flatbuffers")
+file(REMOVE "${SOURCE_PATH}/cmake/FindCUDNN.cmake")
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ set(TARGET_IS_AARCH64 1)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ set(TARGET_IS_ARM 1)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(TARGET_IS_X86_64 1)
+else()
+ set(TARGET_IS_X86 1)
+endif()
+
+if (USE_QT_VERSION STREQUAL "6")
+ set(QT_CORE5COMPAT "Core5Compat")
+ set(QT_OPENGLWIDGETS "OpenGLWidgets")
+endif()
+
+string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" BUILD_WITH_STATIC_CRT)
+
+set(ADE_DIR ${CURRENT_INSTALLED_DIR}/share/ade CACHE PATH "Path to existing ADE CMake Config file")
+
+# Cannot use vcpkg_check_features() for "qt" because it requires the QT version number passed, not just a boolean
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ "ade" WITH_ADE
+ "aravis" WITH_ARAVIS
+ "calib3d" BUILD_opencv_calib3d
+ "carotene" WITH_CAROTENE
+ "contrib" WITH_CONTRIB
+ "cuda" WITH_CUBLAS
+ "cuda" WITH_CUDA
+ "cuda" ENABLE_CUDA_FIRST_CLASS_LANGUAGE
+ "cudnn" WITH_CUDNN
+ "dc1394" WITH_1394
+ "directml" WITH_DIRECTML
+ "dnn" BUILD_opencv_dnn
+ "dnn" PROTOBUF_UPDATE_FILES
+ "dnn" UPDATE_PROTO_FILES
+ "dnn" WITH_PROTOBUF
+ "dnn-cuda" OPENCV_DNN_CUDA
+ "dshow" WITH_DSHOW
+ "eigen" WITH_EIGEN
+ "ffmpeg" WITH_FFMPEG
+ "freetype" WITH_FREETYPE
+ "gapi" BUILD_opencv_gapi
+ "gdcm" WITH_GDCM
+ "gstreamer" WITH_GSTREAMER
+ "gtk" WITH_GTK
+ "halide" WITH_HALIDE
+ "ipp" WITH_IPP
+ "ipp" BUILD_IPP_IW
+ "highgui" BUILD_opencv_highgui
+ "intrinsics" CV_ENABLE_INTRINSICS
+ "openjpeg" WITH_OPENJPEG
+ "openmp" WITH_OPENMP
+ "jpeg" WITH_JPEG
+ "jpegxl" WITH_JPEGXL
+ "msmf" WITH_MSMF
+ "nonfree" OPENCV_ENABLE_NONFREE
+ "thread" OPENCV_ENABLE_THREAD_SUPPORT
+ "opencl" WITH_OPENCL
+ "openvino" WITH_OPENVINO
+ "openexr" WITH_OPENEXR
+ "opengl" WITH_OPENGL
+ "ovis" CMAKE_REQUIRE_FIND_PACKAGE_OGRE
+ "ovis" BUILD_opencv_ovis
+ "png" WITH_PNG
+ "python" BUILD_opencv_python3
+ "python" WITH_PYTHON
+ "quality" BUILD_opencv_quality
+ "quirc" WITH_QUIRC
+ "rgbd" BUILD_opencv_rgbd
+ "sfm" BUILD_opencv_sfm
+ "tbb" WITH_TBB
+ "tiff" WITH_TIFF
+ "vtk" WITH_VTK
+ "vulkan" WITH_VULKAN
+ "webp" WITH_WEBP
+ "win32ui" WITH_WIN32UI
+ "world" BUILD_opencv_world
+ INVERTED_FEATURES
+ "fs" OPENCV_DISABLE_FILESYSTEM_SUPPORT
+)
+
+if("dnn" IN_LIST FEATURES)
+ set(FLATC "${CURRENT_HOST_INSTALLED_DIR}/tools/flatbuffers/flatc${VCPKG_HOST_EXECUTABLE_SUFFIX}")
+ vcpkg_execute_required_process(
+ COMMAND "${FLATC}" --cpp -o "${SOURCE_PATH}/modules/dnn/misc/tflite" "${SOURCE_PATH}/modules/dnn/src/tflite/schema.fbs"
+ WORKING_DIRECTORY "${SOURCE_PATH}/modules/dnn/misc/tflite"
+ LOGNAME flatc-${TARGET_TRIPLET}
+ )
+endif()
+
+set(WITH_QT OFF)
+if("qt" IN_LIST FEATURES)
+ set(WITH_QT ${USE_QT_VERSION})
+endif()
+
+if("python" IN_LIST FEATURES)
+ x_vcpkg_get_python_packages(PYTHON_VERSION "3" PACKAGES numpy OUT_PYTHON_VAR "PYTHON3")
+ set(ENV{PYTHON} "${PYTHON3}")
+ file(GLOB _py3_include_path "${CURRENT_INSTALLED_DIR}/include/python3*")
+ string(REGEX MATCH "python3\\.([0-9]+)" _python_version_tmp ${_py3_include_path})
+ set(PYTHON_VERSION_MINOR "${CMAKE_MATCH_1}")
+ set(python_ver "3.${PYTHON_VERSION_MINOR}")
+ list(APPEND PYTHON_EXTRA_DEFINES_RELEASE
+ "-D__INSTALL_PATH_PYTHON3=${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2"
+ "-DOPENCV_PYTHON_INSTALL_PATH=${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}"
+ )
+ list(APPEND PYTHON_EXTRA_DEFINES_DEBUG
+ "-D__INSTALL_PATH_PYTHON3=${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2"
+ "-DOPENCV_PYTHON_INSTALL_PATH=${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}"
+ )
+ if(EXISTS "${CURRENT_INSTALLED_DIR}/${PYTHON3_SITE}/cv2")
+ message(FATAL_ERROR "You cannot install opencv4[python] if opencv3[python] is already present.")
+ endif()
+endif()
+
+if("dnn" IN_LIST FEATURES)
+ vcpkg_download_distfile(TINYDNN_ARCHIVE
+ URLS "https://github.com/tiny-dnn/tiny-dnn/archive/v1.0.0a3.tar.gz"
+ FILENAME "opencv-cache/tiny_dnn/adb1c512e09ca2c7a6faef36f9c53e59-v1.0.0a3.tar.gz"
+ SHA512 5f2c1a161771efa67e85b1fea395953b7744e29f61187ac5a6c54c912fb195b3aef9a5827135c3668bd0eeea5ae04a33cc433e1f6683e2b7955010a2632d168b
+ )
+endif()
+
+if("cuda" IN_LIST FEATURES)
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://github.com/NVIDIA/NVIDIAOpticalFlowSDK/archive/edb50da3cf849840d680249aa6dbef248ebce2ca.zip"
+ FILENAME "opencv-cache/nvidia_optical_flow/a73cd48b18dcc0cc8933b30796074191-edb50da3cf849840d680249aa6dbef248ebce2ca.zip"
+ SHA512 12d655ac9fcfc6df0186daa62f7185dadd489f0eeea25567d78c2b47a9840dcce2bd03a3e9b3b42f125dbaf3150f52590ea7597dc1dc8acee852dc0aed56651e
+ )
+endif()
+
+if(VCPKG_TARGET_IS_ANDROID AND (VCPKG_TARGET_ARCHITECTURE MATCHES "^arm"))
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://gitlab.arm.com/kleidi/kleidicv/-/archive/0.3.0/kleidicv-0.3.0.tar.gz"
+ FILENAME "opencv-cache/kleidicv/51a77b0185c2bac2a968a2163869b1ed-kleidicv-0.3.0.tar.gz"
+ SHA512 9d4bf9db3134c1904656e781fdd58bbfe75cf1f23e551fad93b6df47bd1b00b0d62f05ee49c002e331b39ccbb911075c5fae5c291119d141025058dcb4bd5955
+ )
+endif()
+
+if("contrib" IN_LIST FEATURES)
+ vcpkg_from_github(
+ OUT_SOURCE_PATH CONTRIB_SOURCE_PATH
+ REPO opencv/opencv_contrib
+ REF "${VERSION}"
+ SHA512 a5ebb6810a3b5e40858b7fd533f9eb7b3d475dfda843a489bc5168e72c5eaad0a7a23629aace1f43e1b62d9c24e5e1923d841059c297728fac464e00759886c2
+ HEAD_REF master
+ PATCHES
+ 0007-contrib-fix-hdf5.patch
+ 0013-contrib-fix-ogre.patch
+ 0016-contrib-fix-freetype.patch
+ 0018-contrib-fix-tesseract.patch
+ )
+
+ set(BUILD_WITH_CONTRIB_FLAG "-DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_SOURCE_PATH}/modules")
+
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/WeChatCV/opencv_3rdparty/a8b69ccc738421293254aec5ddb38bd523503252/detect.caffemodel"
+ FILENAME "opencv-cache/wechat_qrcode/238e2b2d6f3c18d6c3a30de0c31e23cf-detect.caffemodel"
+ SHA512 58d62faf8679d3f568a26a1d9f7c2e88060426a440315ca8bce7b3b5a8efa34be670afd0abfd0dd5d89f89a042a2408ea602f937080abc6910c2e497b7f5a4b8
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/WeChatCV/opencv_3rdparty/a8b69ccc738421293254aec5ddb38bd523503252/sr.caffemodel"
+ FILENAME "opencv-cache/wechat_qrcode/cbfcd60361a73beb8c583eea7e8e6664-sr.caffemodel"
+ SHA512 917c6f6b84a898b8c8c85c79359e48a779c8a600de563dac2e1c5d013401e9ac9dbcd435013a4ed7a69fc936839fb189aaa3038c127d04ceb6fd3b8fd9dd67bd
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/WeChatCV/opencv_3rdparty/a8b69ccc738421293254aec5ddb38bd523503252/detect.prototxt"
+ FILENAME "opencv-cache/wechat_qrcode/6fb4976b32695f9f5c6305c19f12537d-detect.prototxt"
+ SHA512 2239d31a597049f358f09dbb4c0a7af0b384d9b67cfa3224f8c7e44329647cf19ee7929ac06199cca23bbbf431de0481b74ab51eace6aa20bb2e2fd19b536e49
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/WeChatCV/opencv_3rdparty/a8b69ccc738421293254aec5ddb38bd523503252/sr.prototxt"
+ FILENAME "opencv-cache/wechat_qrcode/69db99927a70df953b471daaba03fbef-sr.prototxt"
+ SHA512 6b715ec45c3fd081e7e113e351edcef0f3d32a75f8b5a9ca2273cb5da9a1116a1b78cba45582a9acf67a7ab76dc4fcdf123f7b3a0d3de2f5c39b26ef450058b7
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i"
+ FILENAME "opencv-cache/xfeatures2d/boostdesc/0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i"
+ SHA512 5c8702a60314fac4ebb6dafb62a603948ec034058d1a582fcb89a063b51511802c02e192eadfc0b233b1f711f4c74cabab6d9ebe8a50c3554ea0ccdbef87dc5c
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i"
+ FILENAME "opencv-cache/xfeatures2d/boostdesc/232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i"
+ SHA512 b28ba2b615e0755ff0f6733b567682800fb9e7d522250aa498075cc1b8927f4177cacdcb0cfdf712539a29c4773232dc714931b6d292292b091b5cf170b203a6
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i"
+ FILENAME "opencv-cache/xfeatures2d/boostdesc/324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i"
+ SHA512 c214045c3730a1d9dfc594f70895edf82d2fd3058a3928908627014371e02460d052cbaedf41bb96cf76460c0a8b4b01b7b0ac7d269ec5d3f17f2a46c9f0091b
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i"
+ FILENAME "opencv-cache/xfeatures2d/boostdesc/202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i"
+ SHA512 f32240a7b975233d2bbad02fdb74c6e29ed71ed6f0c08172ca33eb1e69a7a7f6d6964adf41422213a0452121a9c4bb2effe3d7b9d6743c9bf58d4bc8c9b1db36
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i"
+ FILENAME "opencv-cache/xfeatures2d/boostdesc/98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i"
+ SHA512 f58e2bebfaa690d324691a6c2067d9a1e5267037ea0f2b397966289253b9efd27d8238aff6206e95262086e1fcddf01ae1a1c49f066a8bbac3aa7908214b9a8f
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i"
+ FILENAME "opencv-cache/xfeatures2d/boostdesc/e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i"
+ SHA512 351ee07b9714a379c311f293d96e99f001c894393c911a421b4c536345d43c02ba2d867e9f657eac104841563045ab8c8edab878e5ffeb1e1a7494375ef58987
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i"
+ FILENAME "opencv-cache/xfeatures2d/boostdesc/0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i"
+ SHA512 7fa12e2207ff154acf2433bbb4f3f47aa71d1fa8789493b688d635d20586b7ead30ee8dcd3b3753992ebbe98062cbde44d02683db1c563d52e35aefd7912a4f2
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i"
+ FILENAME "opencv-cache/xfeatures2d/vgg/e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i"
+ SHA512 2403e9119738261a05a3116ca7e5c9e11da452c422f8670cd96ad2cb5bf970f76172e23b9913a3172adf06f2b31bee956f605b66dbccf3d706c4334aff713774
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i"
+ FILENAME "opencv-cache/xfeatures2d/vgg/7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i"
+ SHA512 2c954223677905f489b01988389ac80a8caa33bdb57adb3cb9409075012b5e2f472f14966d8be75d75c90c9330f66d59c69539dc6b5a5e265a4d98ff5041f0ea
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i"
+ FILENAME "opencv-cache/xfeatures2d/vgg/7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i"
+ SHA512 9931ad1d1bd6d11951ca5357ab0a524f6ff9b33f936ceeafebc0dafb379ec7e2105e467443e9f424f60a0f2f445bdff821ed9e42330abed883227183ebad4a9e
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i"
+ FILENAME "opencv-cache/xfeatures2d/vgg/151805e03568c9f490a5e3a872777b75-vgg_generated_120.i"
+ SHA512 ad7c1d2b159ab5790c898815663bb90549f1cf7ade3c82d939d381608b26d26c5b2af01eb1ba21f4d114ced74586ab3fc83f14e2d8cfe4e6faac538aa0e7e255
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat"
+ FILENAME "opencv-cache/data/7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat"
+ SHA512 c16e60a6c4bb4de3ab39b876ae3c3f320ea56f69c93e9303bd2dff8760841dcd71be4161fff8bc71e8fe4fe8747fa8465d49d6bd8f5ebcdaea161f4bc2da7c93
+ )
+endif()
+
+if("ipp" IN_LIST FEATURES)
+ if(VCPKG_TARGET_IS_OSX)
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/0cc4aa06bf2bef4b05d237c69a5a96b9cd0cb85a/ippicv/ippicv_2021.9.1_mac_intel64_20230919_general.tgz"
+ FILENAME "opencv-cache/ippicv/14f01c5a4780bfae9dde9b0aaf5e56fc-ippicv_2021.9.1_mac_intel64_20230919_general.tgz"
+ SHA512 e53aa1bf4336a94554bf40c29a74c85f595c0aec8d9102a158db7ae075db048c1ff7f50ed81eda3ac8e07b1460862970abc820073a53c0f237e584708c5295da
+ )
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ message(FATAL_ERROR "IPP is not supported on arm64 macOS")
+ endif()
+ elseif(VCPKG_TARGET_IS_LINUX)
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/7f55c0c26be418d494615afca15218566775c725/ippicv/ippicv_2021.12.0_lnx_intel64_20240425_general.tgz"
+ FILENAME "opencv-cache/ippicv/d06e6d44ece88f7f17a6cd9216761186-ippicv_2021.12.0_lnx_intel64_20240425_general.tgz"
+ SHA512 b5cffc23be195990d07709057e01d4205083652a1cdf52d076a700d7086244fe91846d2afae126a197603c58b7099872c3e908dfc22b74b21dd2b97219a8bfdd
+ )
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/7f55c0c26be418d494615afca15218566775c725/ippicv/ippicv_2021.12.0_lnx_ia32_20240425_general.tgz"
+ FILENAME "opencv-cache/ippicv/85ffa2b9ed7802b93c23fa27b0097d36-ippicv_2021.12.0_lnx_ia32_20240425_general.tgz"
+ SHA512 e3391ca0e8ed2235e32816cee55293ddd7c312a8c8ba42b1301cbb8752c6b7d47139ab3fe2aa8dd3e1670221e911cc96614bbc066e2bf9a653607413126b5ff1
+ )
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ message(FATAL_ERROR "IPP is not supported on arm64 linux")
+ endif()
+ elseif(VCPKG_TARGET_IS_WINDOWS)
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/7f55c0c26be418d494615afca15218566775c725/ippicv/ippicv_2021.12.0_win_intel64_20240425_general.zip"
+ FILENAME "opencv-cache/ippicv/402ff8c6b4986738fed71c44e1ce665d-ippicv_2021.12.0_win_intel64_20240425_general.zip"
+ SHA512 455e2983a4048db68ad2c4274ee009a7e9d30270c07a7bd9d06d3ae5904326d1a98155e9bb3ea8c47f8ea840671db2e0b3d5f7603fa82a926b23a1ec4f77d2fa
+ )
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/7f55c0c26be418d494615afca15218566775c725/ippicv/ippicv_2021.12.0_win_ia32_20240425_general.zip"
+ FILENAME "opencv-cache/ippicv/8b1d2a23957d57624d0de8f2a5cae5f1-ippicv_2021.12.0_win_ia32_20240425_general.zip"
+ SHA512 494f66af4eec3030fe6d2b58b89267d566fcb31f445d15cc69818d423c41fd950dc55d10694bdf91e3204ae6b13b68cc2375a2ad396b2008596c53aa0d39f4dd
+ )
+ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ message(FATAL_ERROR "IPP is not supported on arm64 windows")
+ endif()
+ endif()
+endif()
+
+if("ffmpeg" IN_LIST FEATURES)
+ if(VCPKG_TARGET_IS_UWP)
+ set(VCPKG_C_FLAGS "/sdl- ${VCPKG_C_FLAGS}")
+ set(VCPKG_CXX_FLAGS "/sdl- ${VCPKG_CXX_FLAGS}")
+ endif()
+endif()
+
+if("halide" IN_LIST FEATURES)
+ list(APPEND ADDITIONAL_BUILD_FLAGS
+ # Halide 13 requires C++17
+ "-DCMAKE_CXX_STANDARD_REQUIRED=ON"
+ "-DCMAKE_DISABLE_FIND_PACKAGE_Halide=ON"
+ "-DHALIDE_ROOT_DIR=${CURRENT_INSTALLED_DIR}"
+ )
+endif()
+
+if("qt" IN_LIST FEATURES)
+ list(APPEND ADDITIONAL_BUILD_FLAGS "-DCMAKE_AUTOMOC=ON")
+endif()
+
+if("contrib" IN_LIST FEATURES)
+ if(VCPKG_TARGET_IS_UWP)
+ list(APPEND ADDITIONAL_BUILD_FLAGS "-DWITH_TESSERACT=OFF")
+ endif()
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ###### Verify that required components and only those are enabled
+ -DENABLE_CONFIG_VERIFICATION=ON
+ ###### opencv cpu recognition is broken, always using host and not target: here we bypass that
+ -DOPENCV_SKIP_SYSTEM_PROCESSOR_DETECTION=TRUE
+ -DAARCH64=${TARGET_IS_AARCH64}
+ -DX86_64=${TARGET_IS_X86_64}
+ -DX86=${TARGET_IS_X86}
+ -DARM=${TARGET_IS_ARM}
+ ###### use c++17 to enable features that fail with c++11 (halide, protobuf, etc.)
+ -DCMAKE_CXX_STANDARD=17
+ ###### ocv_options
+ -DINSTALL_TO_MANGLED_PATHS=OFF
+ -DOpenCV_INSTALL_BINARIES_PREFIX=
+ -DOPENCV_BIN_INSTALL_PATH=bin
+ -DOPENCV_INCLUDE_INSTALL_PATH=include/opencv4
+ -DOPENCV_LIB_INSTALL_PATH=lib
+ -DOPENCV_3P_LIB_INSTALL_PATH=lib/manual-link/opencv4_thirdparty
+ -DOPENCV_CONFIG_INSTALL_PATH=share/opencv4
+ -DOPENCV_FFMPEG_USE_FIND_PACKAGE=FFMPEG
+ -DOPENCV_FFMPEG_SKIP_BUILD_CHECK=TRUE
+ -DCMAKE_DEBUG_POSTFIX=d
+ -DOPENCV_DLLVERSION=4
+ -DOPENCV_DEBUG_POSTFIX=d
+ -DOPENCV_GENERATE_SETUPVARS=OFF
+ -DOPENCV_GENERATE_PKGCONFIG=ON
+ # Do not build docs/examples
+ -DBUILD_DOCS=OFF
+ -DBUILD_EXAMPLES=OFF
+ -DBUILD_PERF_TESTS=OFF
+ -DBUILD_TESTS=OFF
+ -Dade_DIR=${ADE_DIR}
+ ###### Disable build 3rd party libs
+ -DBUILD_IPP_IW=OFF
+ -DBUILD_ITT=OFF
+ -DBUILD_JASPER=OFF
+ -DBUILD_JPEG=OFF
+ -DBUILD_OPENEXR=OFF
+ -DBUILD_OPENJPEG=OFF
+ -DBUILD_PNG=OFF
+ -DBUILD_PROTOBUF=OFF
+ -DBUILD_TBB=OFF
+ -DBUILD_TIFF=OFF
+ -DBUILD_WEBP=OFF
+ -DBUILD_ZLIB=OFF
+ ###### OpenCV Build components
+ -DBUILD_opencv_apps=OFF
+ -DBUILD_opencv_java=OFF
+ -DBUILD_opencv_js=OFF
+ -DBUILD_JAVA=OFF
+ -DBUILD_ANDROID_PROJECT=OFF
+ -DBUILD_ANDROID_EXAMPLES=OFF
+ -DBUILD_PACKAGE=OFF
+ -DBUILD_WITH_DEBUG_INFO=ON
+ -DBUILD_WITH_STATIC_CRT=${BUILD_WITH_STATIC_CRT}
+ -DCURRENT_INSTALLED_DIR=${CURRENT_INSTALLED_DIR}
+ ###### PYLINT/FLAKE8
+ -DENABLE_PYLINT=OFF
+ -DENABLE_FLAKE8=OFF
+ # CMAKE
+ -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_JNI=ON
+ ###### OPENCV vars
+ "-DOPENCV_DOWNLOAD_PATH=${DOWNLOADS}/opencv-cache"
+ ${BUILD_WITH_CONTRIB_FLAG}
+ -DOPENCV_OTHER_INSTALL_PATH=share/opencv4
+ ###### customized properties
+ ${FEATURE_OPTIONS}
+ -DWITH_QT=${WITH_QT}
+ -DWITH_AVIF=OFF
+ -DWITH_CPUFEATURES=OFF
+ -DWITH_ITT=OFF
+ -DWITH_JASPER=OFF #Jasper is deprecated and will be removed in a future release, and is mutually exclusive with openjpeg that is preferred
+ -DWITH_LAPACK=OFF
+ -DWITH_MATLAB=OFF
+ -DWITH_NVCUVID=OFF
+ -DWITH_NVCUVENC=OFF
+ -DWITH_OBSENSOR=OFF
+ -DWITH_OPENCL_D3D11_NV=OFF
+ -DWITH_OPENCLAMDFFT=OFF
+ -DWITH_OPENCLAMDBLAS=OFF
+ -DWITH_SPNG=OFF #spng is mutually exclusive with png, which has been chosen since it's more widely used
+ -DWITH_VA=OFF
+ -DWITH_VA_INTEL=OFF
+ -DWITH_ZLIB_NG=OFF
+ -DCV_TRACE=OFF
+ ###### Additional build flags
+ ${ADDITIONAL_BUILD_FLAGS}
+ OPTIONS_RELEASE
+ ${PYTHON_EXTRA_DEFINES_RELEASE}
+ OPTIONS_DEBUG
+ ${PYTHON_EXTRA_DEFINES_DEBUG}
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup()
+vcpkg_copy_pdbs()
+
+if (NOT VCPKG_BUILD_TYPE)
+ # Update debug paths for libs in Android builds (e.g. sdk/native/staticlibs/armeabi-v7a)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/opencv4/OpenCVModules-debug.cmake"
+ "\${_IMPORT_PREFIX}/sdk"
+ "\${_IMPORT_PREFIX}/debug/sdk"
+ IGNORE_UNCHANGED
+ )
+endif()
+
+file(READ "${CURRENT_PACKAGES_DIR}/share/opencv4/OpenCVModules.cmake" OPENCV_MODULES)
+set(DEPS_STRING "include(CMakeFindDependencyMacro)
+if(${BUILD_opencv_dnn} AND NOT TARGET libprotobuf) #Check if the CMake target libprotobuf is already defined
+ find_dependency(Protobuf CONFIG REQUIRED)
+ if(TARGET protobuf::libprotobuf)
+ add_library (libprotobuf INTERFACE IMPORTED)
+ set_target_properties(libprotobuf PROPERTIES
+ INTERFACE_LINK_LIBRARIES protobuf::libprotobuf
+ )
+ else()
+ add_library (libprotobuf UNKNOWN IMPORTED)
+ set_target_properties(libprotobuf PROPERTIES
+ IMPORTED_LOCATION \"${Protobuf_LIBRARY}\"
+ INTERFACE_INCLUDE_DIRECTORIES \"${Protobuf_INCLUDE_DIR}\"
+ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES \"${Protobuf_INCLUDE_DIR}\"
+ )
+ endif()
+endif()
+find_dependency(Threads)")
+
+if("ade" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(ade)")
+endif()
+if("contrib" IN_LIST FEATURES AND NOT VCPKG_TARGET_IS_UWP AND NOT VCPKG_TARGET_IS_IOS AND NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "^arm"))
+ string(APPEND DEPS_STRING "
+# C language is required for try_compile tests in FindHDF5
+enable_language(C)
+find_dependency(HDF5)
+find_dependency(Tesseract)")
+endif()
+if("eigen" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(Eigen3 CONFIG)")
+endif()
+if("ffmpeg" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(FFMPEG)")
+endif()
+if("freetype" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(harfbuzz)")
+endif()
+if("gdcm" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(GDCM)")
+endif()
+if("omp" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(OpenMP)")
+endif()
+if("openexr" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(OpenEXR CONFIG)")
+endif()
+if("openjpeg" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(OpenJPEG)")
+endif()
+if("openvino" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(OpenVINO CONFIG)")
+endif()
+if("ovis" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(OGRE)")
+endif()
+if("qt" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_AUTOUIC ON)")
+ if("opengl" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "
+find_dependency(Qt${USE_QT_VERSION} COMPONENTS Core Gui Widgets Test Concurrent ${QT_CORE5COMPAT} OpenGL ${QT_OPENGLWIDGETS})")
+ else()
+ string(APPEND DEPS_STRING "
+find_dependency(Qt${USE_QT_VERSION} COMPONENTS Core Gui Widgets Test Concurrent ${QT_CORE5COMPAT})")
+ endif()
+endif()
+if("quirc" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(quirc)")
+endif()
+if("sfm" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(gflags CONFIG)\nfind_dependency(Ceres CONFIG)")
+endif()
+if("tbb" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(TBB)")
+endif()
+if("tiff" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(TIFF)")
+endif()
+if("vtk" IN_LIST FEATURES)
+ string(APPEND DEPS_STRING "\nfind_dependency(VTK)")
+endif()
+
+string(REPLACE "set(CMAKE_IMPORT_FILE_VERSION 1)"
+ "set(CMAKE_IMPORT_FILE_VERSION 1)\n${DEPS_STRING}" OPENCV_MODULES "${OPENCV_MODULES}")
+
+if("openmp" IN_LIST FEATURES)
+ string(REPLACE "set_target_properties(opencv_core PROPERTIES
+INTERFACE_LINK_LIBRARIES \""
+ "set_target_properties(opencv_core PROPERTIES
+INTERFACE_LINK_LIBRARIES \"\$<LINK_ONLY:OpenMP::OpenMP_CXX>;" OPENCV_MODULES "${OPENCV_MODULES}")
+endif()
+
+if("ovis" IN_LIST FEATURES)
+ string(REPLACE "OgreGLSupportStatic"
+ "OgreGLSupport" OPENCV_MODULES "${OPENCV_MODULES}")
+endif()
+
+file(WRITE "${CURRENT_PACKAGES_DIR}/share/opencv4/OpenCVModules.cmake" "${OPENCV_MODULES}")
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+endif()
+
+if(VCPKG_TARGET_IS_ANDROID)
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/README.android")
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/README.android")
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2/typing")
+file(GLOB PYTHON3_SITE_FILES "${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2/*.py")
+foreach(PYTHON3_SITE_FILE ${PYTHON3_SITE_FILES})
+ vcpkg_replace_string("${PYTHON3_SITE_FILE}"
+ "os.path.join('${CURRENT_PACKAGES_DIR}'"
+ "os.path.join('.'"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${PYTHON3_SITE_FILE}"
+ "os.path.join('${CURRENT_PACKAGES_DIR}/${PYTHON3_SITE}/cv2'"
+ "os.path.join('.'"
+ IGNORE_UNCHANGED
+ )
+endforeach()
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2/typing")
+file(GLOB PYTHON3_SITE_FILES_DEBUG "${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2/*.py")
+foreach(PYTHON3_SITE_FILE_DEBUG ${PYTHON3_SITE_FILES_DEBUG})
+ vcpkg_replace_string("${PYTHON3_SITE_FILE_DEBUG}"
+ "os.path.join('${CURRENT_PACKAGES_DIR}/debug'"
+ "os.path.join('.'"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${PYTHON3_SITE_FILE_DEBUG}"
+ "os.path.join('${CURRENT_PACKAGES_DIR}/debug/${PYTHON3_SITE}/cv2'"
+ "os.path.join('.'"
+ IGNORE_UNCHANGED
+ )
+endforeach()
+
+if (EXISTS "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc"
+ "-lQt6::Core5Compat"
+ "-lQt6Core5Compat"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc"
+ "-lhdf5::hdf5-static"
+ "-lhdf5"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc"
+ "-lglog::glog"
+ "-lglog"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc"
+ "-lgflags::gflags_static"
+ "-lgflags"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc"
+ "-lTesseract::libtesseract"
+ "-ltesseract"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc"
+ "-lharfbuzz::harfbuzz"
+ "-lharfbuzz"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/opencv4.pc"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/"
+ "\${prefix}"
+ IGNORE_UNCHANGED
+ )
+endif()
+
+if (EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc"
+ "-lQt6::Core5Compat"
+ "-lQt6Core5Compat"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc"
+ "-lhdf5::hdf5-static"
+ "-lhdf5"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc"
+ "-lglog::glog"
+ "-lglog"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc"
+ "-lgflags::gflags_static"
+ "-lgflags"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc"
+ "-lTesseract::libtesseract"
+ "-ltesseract"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc"
+ "-lharfbuzz::harfbuzz"
+ "-lharfbuzz"
+ IGNORE_UNCHANGED
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/opencv4.pc"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/"
+ "\${prefix}"
+ IGNORE_UNCHANGED
+ )
+endif()
+
+vcpkg_fixup_pkgconfig()
+
+configure_file("${CURRENT_PORT_DIR}/usage.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" @ONLY)
+
+file(REMOVE "${CURRENT_PACKAGES_DIR}/LICENSE")
+file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/LICENSE")
+file(GLOB_RECURSE extra1_license_files "${CURRENT_PACKAGES_DIR}/share/licenses/*")
+file(GLOB_RECURSE extra2_license_files "${CURRENT_PACKAGES_DIR}/share/opencv4/licenses/*")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE" ${extra1_license_files} ${extra2_license_files})
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/opencv4/licenses")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/licenses")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/opencv")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
diff --git a/vcpkg/ports/opencv4/usage.in b/vcpkg/ports/opencv4/usage.in
new file mode 100644
index 0000000..217ce72
--- /dev/null
+++ b/vcpkg/ports/opencv4/usage.in
@@ -0,0 +1,4 @@
+@PORT@ is compatible with built-in CMake variables. In case of multiple OpenCV version installed, set OpenCV_ROOT *before* the find_package call:
+
+ set(OpenCV_ROOT "${VCPKG_INSTALLED_DIR}/@TARGET_TRIPLET@/share/@PORT@")
+ find_package(OpenCV REQUIRED)
diff --git a/vcpkg/ports/opencv4/vcpkg.json b/vcpkg/ports/opencv4/vcpkg.json
new file mode 100644
index 0000000..140f925
--- /dev/null
+++ b/vcpkg/ports/opencv4/vcpkg.json
@@ -0,0 +1,506 @@
+{
+ "name": "opencv4",
+ "version": "4.11.0",
+ "port-version": 4,
+ "description": "computer vision library",
+ "homepage": "https://github.com/opencv/opencv",
+ "license": "Apache-2.0",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ {
+ "name": "vcpkg-get-python-packages",
+ "host": true
+ },
+ "zlib"
+ ],
+ "default-features": [
+ "calib3d",
+ {
+ "name": "directml",
+ "platform": "windows & !uwp & !mingw"
+ },
+ {
+ "name": "dnn",
+ "platform": "!android"
+ },
+ {
+ "name": "dshow",
+ "platform": "windows & !uwp"
+ },
+ "fs",
+ {
+ "name": "gapi",
+ "platform": "!uwp"
+ },
+ {
+ "name": "gtk",
+ "platform": "linux"
+ },
+ "highgui",
+ "intrinsics",
+ "jpeg",
+ {
+ "name": "msmf",
+ "platform": "windows & !uwp & !mingw"
+ },
+ "png",
+ "quirc",
+ "thread",
+ "tiff",
+ "webp",
+ {
+ "name": "win32ui",
+ "platform": "windows & !uwp"
+ }
+ ],
+ "features": {
+ "ade": {
+ "description": "graph api",
+ "dependencies": [
+ "ade"
+ ]
+ },
+ "aravis": {
+ "description": "aravis",
+ "dependencies": [
+ {
+ "name": "aravis",
+ "default-features": false
+ }
+ ]
+ },
+ "calib3d": {
+ "description": "calib3d module"
+ },
+ "carotene": {
+ "description": "carotene module"
+ },
+ "contrib": {
+ "description": "opencv_contrib module",
+ "dependencies": [
+ {
+ "name": "hdf5",
+ "platform": "!uwp & !(windows & (arm | arm64)) & !ios"
+ },
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "calib3d"
+ ]
+ },
+ {
+ "name": "tesseract",
+ "platform": "!uwp & !(windows & (arm | arm64)) & !ios"
+ }
+ ]
+ },
+ "cuda": {
+ "description": "CUDA support for opencv",
+ "dependencies": [
+ "cuda",
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "contrib"
+ ]
+ }
+ ]
+ },
+ "cudnn": {
+ "description": "cuDNN support for opencv",
+ "dependencies": [
+ "cudnn",
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "cuda"
+ ]
+ }
+ ]
+ },
+ "dc1394": {
+ "description": "Dc1394 support for opencv",
+ "dependencies": [
+ "libdc1394"
+ ]
+ },
+ "directml": {
+ "description": "Build with DirectML support",
+ "supports": "windows & !uwp & !mingw"
+ },
+ "dnn": {
+ "description": "Enable dnn module",
+ "supports": "!android",
+ "dependencies": [
+ "flatbuffers",
+ {
+ "name": "flatbuffers",
+ "host": true,
+ "default-features": false
+ },
+ "protobuf"
+ ]
+ },
+ "dnn-cuda": {
+ "description": "Build dnn module with CUDA support",
+ "dependencies": [
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "cudnn",
+ "dnn"
+ ]
+ }
+ ]
+ },
+ "dshow": {
+ "description": "Enable DirectShow",
+ "supports": "windows"
+ },
+ "eigen": {
+ "description": "Eigen support for opencv",
+ "dependencies": [
+ "eigen3"
+ ]
+ },
+ "ffmpeg": {
+ "description": "ffmpeg support for opencv",
+ "dependencies": [
+ {
+ "name": "ffmpeg",
+ "default-features": false,
+ "features": [
+ "avcodec",
+ "avformat",
+ "swresample",
+ "swscale"
+ ]
+ }
+ ]
+ },
+ "freetype": {
+ "description": "Freetype support for opencv",
+ "dependencies": [
+ {
+ "name": "freetype",
+ "default-features": false
+ },
+ {
+ "name": "harfbuzz",
+ "default-features": false
+ }
+ ]
+ },
+ "fs": {
+ "description": "Enable filesystem support"
+ },
+ "gapi": {
+ "description": "Enable gapi module",
+ "supports": "!uwp"
+ },
+ "gdcm": {
+ "description": "GDCM support for opencv",
+ "dependencies": [
+ "gdcm"
+ ]
+ },
+ "gstreamer": {
+ "description": "gstreamer support for opencv",
+ "dependencies": [
+ {
+ "name": "gstreamer",
+ "default-features": false,
+ "features": [
+ "plugins-base"
+ ]
+ }
+ ]
+ },
+ "gtk": {
+ "description": "GTK support for opencv",
+ "supports": "!windows & !osx & !ios & !android",
+ "dependencies": [
+ {
+ "name": "gtk3",
+ "default-features": false
+ }
+ ]
+ },
+ "halide": {
+ "description": "Halide support for opencv",
+ "dependencies": [
+ "halide",
+ {
+ "name": "opencv4",
+ "default-features": false
+ },
+ {
+ "name": "opencv4",
+ "features": [
+ "dnn"
+ ]
+ }
+ ]
+ },
+ "highgui": {
+ "description": "highgui module"
+ },
+ "intrinsics": {
+ "description": "Enable intrinsics"
+ },
+ "ipp": {
+ "description": "Enable Intel Integrated Performance Primitives",
+ "supports": "(osx & x64) | (windows & (x64 | x86)) | (linux & (x64 | x86))"
+ },
+ "jpeg": {
+ "description": "JPEG support for opencv",
+ "dependencies": [
+ "libjpeg-turbo"
+ ]
+ },
+ "jpegxl": {
+ "description": "JPEGXL support for opencv",
+ "dependencies": [
+ "libjxl"
+ ]
+ },
+ "msmf": {
+ "description": "Microsoft Media Foundation support for opencv",
+ "supports": "windows & !uwp & !mingw"
+ },
+ "nonfree": {
+ "description": "allow nonfree and unredistributable libraries"
+ },
+ "opencl": {
+ "description": "Enable opencl support",
+ "supports": "!osx",
+ "dependencies": [
+ "opencl"
+ ]
+ },
+ "openexr": {
+ "description": "OpenEXR support for opencv",
+ "dependencies": [
+ "openexr"
+ ]
+ },
+ "opengl": {
+ "description": "opengl support for opencv",
+ "supports": "!osx",
+ "dependencies": [
+ "opengl"
+ ]
+ },
+ "openjpeg": {
+ "description": "JPEG 2000 support for opencv",
+ "dependencies": [
+ "openjpeg"
+ ]
+ },
+ "openmp": {
+ "description": "Enable OpenMP support",
+ "supports": "!osx"
+ },
+ "openvino": {
+ "description": "OpenVINO support for OpenCV DNN",
+ "supports": "!uwp & !x86",
+ "dependencies": [
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "dnn"
+ ]
+ },
+ {
+ "name": "openvino",
+ "default-features": false,
+ "features": [
+ "auto",
+ "cpu",
+ "hetero"
+ ]
+ },
+ {
+ "name": "openvino",
+ "default-features": false,
+ "features": [
+ "gpu"
+ ],
+ "platform": "x64 & !(osx | uwp)"
+ }
+ ]
+ },
+ "ovis": {
+ "description": "opencv_ovis module",
+ "supports": "!(windows & static)",
+ "dependencies": [
+ "ogre",
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "contrib"
+ ]
+ }
+ ]
+ },
+ "png": {
+ "description": "PNG support for opencv",
+ "dependencies": [
+ "libpng"
+ ]
+ },
+ "python": {
+ "description": "Python wrapper support for opencv",
+ "dependencies": [
+ {
+ "name": "python3",
+ "default-features": false,
+ "features": [
+ "extensions"
+ ]
+ }
+ ]
+ },
+ "qt": {
+ "description": "Qt GUI support for opencv",
+ "dependencies": [
+ "qt5compat",
+ {
+ "name": "qtbase",
+ "default-features": false,
+ "features": [
+ "concurrent",
+ "gui",
+ "testlib",
+ "widgets"
+ ]
+ }
+ ]
+ },
+ "quality": {
+ "description": "Build opencv_quality module",
+ "supports": "!uwp",
+ "dependencies": [
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "contrib"
+ ]
+ }
+ ]
+ },
+ "quirc": {
+ "description": "Enable QR code module",
+ "dependencies": [
+ "quirc"
+ ]
+ },
+ "rgbd": {
+ "description": "Build opencv_rgbd module",
+ "dependencies": [
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "contrib"
+ ]
+ }
+ ]
+ },
+ "sfm": {
+ "description": "opencv_sfm module",
+ "dependencies": [
+ "ceres",
+ "gflags",
+ "glog",
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "contrib"
+ ]
+ },
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "eigen"
+ ]
+ }
+ ]
+ },
+ "tbb": {
+ "description": "Enable Intel Threading Building Blocks",
+ "supports": "!static",
+ "dependencies": [
+ "tbb"
+ ]
+ },
+ "thread": {
+ "description": "Enable thread support"
+ },
+ "tiff": {
+ "description": "TIFF support for opencv",
+ "dependencies": [
+ {
+ "name": "tiff",
+ "default-features": false
+ }
+ ]
+ },
+ "vtk": {
+ "description": "vtk support for opencv",
+ "dependencies": [
+ {
+ "name": "opencv4",
+ "features": [
+ "contrib"
+ ]
+ },
+ {
+ "name": "vtk",
+ "default-features": false
+ }
+ ]
+ },
+ "vulkan": {
+ "description": "Vulkan support for opencv dnn",
+ "dependencies": [
+ {
+ "name": "opencv4",
+ "default-features": false,
+ "features": [
+ "dnn"
+ ]
+ }
+ ]
+ },
+ "webp": {
+ "description": "WebP support for opencv",
+ "dependencies": [
+ "libwebp"
+ ]
+ },
+ "win32ui": {
+ "description": "Enable win32ui",
+ "supports": "windows & !uwp"
+ },
+ "world": {
+ "description": "Compile to a single package support for opencv"
+ }
+ }
+}