aboutsummaryrefslogtreecommitdiff
path: root/ports/opencv3
diff options
context:
space:
mode:
authorStefano Sinigardi <stesinigardi@hotmail.com>2019-08-12 18:22:30 +0200
committerVictor Romero <romerosanchezv@gmail.com>2019-08-12 09:22:30 -0700
commit4fb51523e91e7a98150e3810241b83757a8d2706 (patch)
treeedcacc3aef4c1559857a110d4d162058abb955a0 /ports/opencv3
parentfffcd0a5ae21d0b7ae0c8cdbd7bd1210f5a29031 (diff)
downloadvcpkg-4fb51523e91e7a98150e3810241b83757a8d2706.tar.gz
vcpkg-4fb51523e91e7a98150e3810241b83757a8d2706.zip
[OpenCV] Update to v4.1.1 (#5169)
* [OpenCV] update to v4 * [OpenCV] update to v4.1 * [OpenCV] merge #6901 and #6812 * [OpenCV] port patches to v4.1 * [OpenCV] fix naming * [OpenCV] fix regression with static linkage * [OpenCV] fix linking to optional feature dependencies in static mode * fix ffmpeg on some architectures * trigger rebuild of regressions on macOS * [zxing-cpp] fix opencv 4.1 compat * [ogre] improve patching for static builds * [OpenCV] fixes for extra features * [OpenCV] drastically reduce patchset * [OpenCV] fix regression on linux * [OpenCV] fix regression on Windows * [qt5] depends on qt5-activeqt only on windows * update to v4.1.1 * [OpenCV] additional fixes for 4.1.1 * [OpenCV] fix Eigen3 feature integration * [opencv] Fix compilation in UWP * [opencv] Fix merge conflicts * [ffmpeg] fix cmake module for osx * [OpenCV] add pre-caching of optflow cuda package * [gdcm] properly fix #6863 instead of wrong #6901 * [OpenCV] fix OpenMP feature * [opencv] Add missing GetModuleHandle() call guard for UWP * [freeimage] Do not depend on libwebp[all] on UWP * [opencv] Set app container bit for UWP * [zxing-cpp] Fail with explicit message in UWP * [pthreads4w] fix target creation, missing dlls * [pthreads4w] bump CONTROL * [opencv,zxing-cpp] Fix OpenCV Video IO module * [zxing-cpp] Revert unnecessary changes * [opencv] Feature halide * Fix regression in UWP * [ffmpeg] remove unnecessary patch pointing to old OpenCV version * [opencv] remove versioning from windows dll filenames * [opencv] Move port to opencv4 * [opencv,opencv4] Make meta-package install OpenCV 4.1 * [opencv3] Rename old port opencv->opencv3 * Add failure messages when another OpenCV is already installed
Diffstat (limited to 'ports/opencv3')
-rw-r--r--ports/opencv3/0001-winrt-fixes.patch46
-rw-r--r--ports/opencv3/0002-install-options.patch137
-rw-r--r--ports/opencv3/0003-disable-downloading.patch11
-rw-r--r--ports/opencv3/0004-use-find-package-required.patch83
-rw-r--r--ports/opencv3/0005-remove-custom-protobuf-find-package.patch25
-rw-r--r--ports/opencv3/0006-fix-missing-openjp2.patch16
-rw-r--r--ports/opencv3/CONTROL93
-rw-r--r--ports/opencv3/portfile.cmake423
-rw-r--r--ports/opencv3/usage5
9 files changed, 839 insertions, 0 deletions
diff --git a/ports/opencv3/0001-winrt-fixes.patch b/ports/opencv3/0001-winrt-fixes.patch
new file mode 100644
index 000000000..b2fe1a021
--- /dev/null
+++ b/ports/opencv3/0001-winrt-fixes.patch
@@ -0,0 +1,46 @@
+--- a/cmake/OpenCVModule.cmake
++++ b/cmake/OpenCVModule.cmake
+@@ -848,7 +848,7 @@ macro(ocv_create_module)
+ set(the_module_target ${the_module})
+ endif()
+
+- if(WINRT)
++ if(WINRT AND BUILD_TESTS)
+ # removing APPCONTAINER from modules to run from console
+ # in case of usual starting of WinRT test apps output is missing
+ # so starting of console version w/o APPCONTAINER is required to get test results
+--- a/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp
++++ b/modules/highgui/include/opencv2/highgui/highgui_winrt.hpp
+@@ -24,6 +24,7 @@
+ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ // POSSIBILITY OF SUCH DAMAGE.
+
++#include "opencv2/core/cvdef.h"
+ using namespace Windows::UI::Xaml::Controls;
+
+ namespace cv
+--- a/modules/highgui/src/window_winrt_bridge.hpp
++++ b/modules/highgui/src/window_winrt_bridge.hpp
+@@ -28,6 +28,7 @@
+
+ #include <map>
+ #include <opencv2\core.hpp>
++#include "opencv2/highgui/highgui_c.h"
+
+ using namespace Windows::UI::Xaml::Controls;
+
+--- a/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp
++++ b/modules/videoio/src/cap_winrt/CaptureFrameGrabber.cpp
+@@ -94,10 +94,10 @@ Media::CaptureFrameGrabber::~CaptureFrameGrabber()
+
+ void Media::CaptureFrameGrabber::ShowCameraSettings()
+ {
+-#if WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP
++#if (WINAPI_FAMILY!=WINAPI_FAMILY_PHONE_APP) && (WINAPI_FAMILY!=WINAPI_FAMILY_APP)
+ if (_state == State::Started)
+ {
+- CameraOptionsUI::Show(_capture.Get());
++ CameraOptionsUI::Show(_capture.Get()); // TODO: Turn it on again in UWP mode by adding reference to UWP Desktop Extensions
+ }
+ #endif
+ }
diff --git a/ports/opencv3/0002-install-options.patch b/ports/opencv3/0002-install-options.patch
new file mode 100644
index 000000000..0719a7cb9
--- /dev/null
+++ b/ports/opencv3/0002-install-options.patch
@@ -0,0 +1,137 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -312,6 +312,10 @@ OCV_OPTION(INSTALL_PYTHON_EXAMPLES "Install Python examples" OFF )
+ OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples" OFF IF ANDROID )
+ OCV_OPTION(INSTALL_TO_MANGLED_PATHS "Enables mangled install paths, that help with side by side installs." OFF IF (UNIX AND NOT ANDROID AND NOT APPLE_FRAMEWORK AND BUILD_SHARED_LIBS) )
+ OCV_OPTION(INSTALL_TESTS "Install accuracy and performance test binaries and test data" OFF)
++OCV_OPTION(INSTALL_HEADERS "Install header files" ON)
++OCV_OPTION(INSTALL_LICENSE "Install license file" ON)
++OCV_OPTION(INSTALL_OTHER "Install other files" ON)
++OCV_OPTION(INSTALL_FORCE_UNIX_PATHS "Force unix-style installation" OFF)
+
+ # OpenCV build options
+ # ===================================================
+@@ -378,7 +382,9 @@ else()
+ endif()
+
+ if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
+- if(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH)
++ if(DEFINED OpenCV_DISABLE_ARCH_PATH)
++ ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "")
++ elseif(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH)
+ ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
+ else()
+ message(STATUS "Can't detect runtime and/or arch")
+@@ -433,12 +439,8 @@ else()
+ ocv_update(3P_LIBRARY_OUTPUT_PATH "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
+
+ if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
+- if(OpenCV_STATIC)
+- ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
+- else()
+- ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
+- endif()
+- ocv_update(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
++ ocv_update(OPENCV_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
++ ocv_update(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
+ ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH samples)
+ ocv_update(OPENCV_JAR_INSTALL_PATH java)
+ ocv_update(OPENCV_OTHER_INSTALL_PATH etc)
+@@ -901,7 +903,7 @@ if(NOT OPENCV_LICENSE_FILE)
+ endif()
+
+ # for UNIX it does not make sense as LICENSE and readme will be part of the package automatically
+-if(ANDROID OR NOT UNIX)
++if(ANDROID OR NOT UNIX AND INSTALL_LICENSE)
+ install(FILES ${OPENCV_LICENSE_FILE}
+ PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
+ DESTINATION ./ COMPONENT libs)
+--- a/cmake/OpenCVGenConfig.cmake
++++ b/cmake/OpenCVGenConfig.cmake
+@@ -105,7 +105,7 @@ 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(((CMAKE_HOST_SYSTEM_NAME MATCHES "Linux" OR UNIX) AND NOT ANDROID) OR INSTALL_FORCE_UNIX_PATHS)
+ ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "" "")
+ endif()
+
+@@ -117,7 +117,7 @@ endif()
+ # --------------------------------------------------------------------------------------------
+ # Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages
+ # --------------------------------------------------------------------------------------------
+-if(WIN32)
++if(WIN32 AND NOT INSTALL_FORCE_UNIX_PATHS)
+ if(CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
+ if(BUILD_SHARED_LIBS)
+ set(_lib_suffix "lib")
+--- a/cmake/OpenCVGenHeaders.cmake
++++ b/cmake/OpenCVGenHeaders.cmake
+@@ -1,7 +1,9 @@
+ # platform-specific config file
+ configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/cvconfig.h.in" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h")
+ configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/cvconfig.h.in" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/cvconfig.h")
+-install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
++if(INSTALL_HEADERS)
++ install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
++endif()
+
+ # platform-specific config file
+ ocv_compiler_optimization_fill_cpu_config()
+@@ -29,4 +31,6 @@ set(OPENCV_MODULE_DEFINITIONS_CONFIGMAKE "${OPENCV_MODULE_DEFINITIONS_CONFIGMAKE
+ #endforeach()
+
+ configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/opencv_modules.hpp.in" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp")
+-install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
++if(INSTALL_HEADERS)
++ install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
++endif()
+\ No newline at end of file
+--- a/cmake/OpenCVModule.cmake
++++ b/cmake/OpenCVModule.cmake
+@@ -1000,7 +1000,9 @@ macro(_ocv_create_module)
+ foreach(hdr ${OPENCV_MODULE_${the_module}_HEADERS})
+ string(REGEX REPLACE "^.*opencv2/" "opencv2/" hdr2 "${hdr}")
+ if(NOT hdr2 MATCHES "private" AND hdr2 MATCHES "^(opencv2/?.*)/[^/]+.h(..)?$" )
+- install(FILES ${hdr} OPTIONAL DESTINATION "${OPENCV_INCLUDE_INSTALL_PATH}/${CMAKE_MATCH_1}" COMPONENT dev)
++ if(INSTALL_HEADERS)
++ install(FILES ${hdr} OPTIONAL DESTINATION "${OPENCV_INCLUDE_INSTALL_PATH}/${CMAKE_MATCH_1}" COMPONENT dev)
++ endif()
+ endif()
+ endforeach()
+ endif()
+--- a/data/CMakeLists.txt
++++ b/data/CMakeLists.txt
+@@ -1,8 +1,10 @@
+ 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_OTHER)
++ install(FILES ${HAAR_CASCADES} DESTINATION ${OPENCV_OTHER_INSTALL_PATH}/haarcascades COMPONENT libs)
++ install(FILES ${LBP_CASCADES} DESTINATION ${OPENCV_OTHER_INSTALL_PATH}/lbpcascades COMPONENT libs)
++endif()
+
+ if(INSTALL_TESTS AND OPENCV_TEST_DATA_PATH)
+ install(DIRECTORY "${OPENCV_TEST_DATA_PATH}/" DESTINATION "${OPENCV_TEST_DATA_INSTALL_PATH}" COMPONENT "tests")
+--- a/include/CMakeLists.txt
++++ b/include/CMakeLists.txt
+@@ -1,7 +1,9 @@
+-file(GLOB old_hdrs "opencv/*.h*")
+-install(FILES ${old_hdrs}
+- DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv
+- COMPONENT dev)
+-install(FILES "opencv2/opencv.hpp"
+- DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2
+- COMPONENT dev)
++if(INSTALL_HEADERS)
++ file(GLOB old_hdrs "opencv/*.h*")
++ install(FILES ${old_hdrs}
++ DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv
++ COMPONENT dev)
++ install(FILES "opencv2/opencv.hpp"
++ DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2
++ COMPONENT dev)
++endif()
diff --git a/ports/opencv3/0003-disable-downloading.patch b/ports/opencv3/0003-disable-downloading.patch
new file mode 100644
index 000000000..28b00251f
--- /dev/null
+++ b/ports/opencv3/0003-disable-downloading.patch
@@ -0,0 +1,11 @@
+--- a/cmake/OpenCVDownload.cmake
++++ b/cmake/OpenCVDownload.cmake
+@@ -151,6 +151,8 @@ 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 )")
+ file(DOWNLOAD "${DL_URL}" "${CACHE_CANDIDATE}"
+ INACTIVITY_TIMEOUT 60
+ TIMEOUT 600
diff --git a/ports/opencv3/0004-use-find-package-required.patch b/ports/opencv3/0004-use-find-package-required.patch
new file mode 100644
index 000000000..4e1daf659
--- /dev/null
+++ b/ports/opencv3/0004-use-find-package-required.patch
@@ -0,0 +1,83 @@
+--- a/cmake/OpenCVFindLibsGrfmt.cmake
++++ b/cmake/OpenCVFindLibsGrfmt.cmake
+@@ -6,7 +6,7 @@
+ if(BUILD_ZLIB)
+ ocv_clear_vars(ZLIB_FOUND)
+ else()
+- find_package(ZLIB "${MIN_VER_ZLIB}")
++ find_package(ZLIB "${MIN_VER_ZLIB}" REQUIRED)
+ if(ZLIB_FOUND AND ANDROID)
+ if(ZLIB_LIBRARIES MATCHES "/usr/(lib|lib32|lib64)/libz.so$")
+ set(ZLIB_LIBRARIES z)
+@@ -30,7 +30,7 @@ if(WITH_JPEG)
+ if(BUILD_JPEG)
+ ocv_clear_vars(JPEG_FOUND)
+ else()
+- include(FindJPEG)
++ find_package(JPEG REQUIRED)
+ endif()
+
+ if(NOT JPEG_FOUND)
+@@ -51,7 +51,7 @@ if(WITH_TIFF)
+ if(BUILD_TIFF)
+ ocv_clear_vars(TIFF_FOUND)
+ else()
+- include(FindTIFF)
++ find_package(TIFF REQUIRED)
+ 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)
+ endif()
+@@ -94,7 +94,7 @@ if(WITH_WEBP)
+ if(BUILD_WEBP)
+ ocv_clear_vars(WEBP_FOUND WEBP_LIBRARY WEBP_LIBRARIES WEBP_INCLUDE_DIR)
+ else()
+- include(cmake/OpenCVFindWebP.cmake)
++ find_package(WebP REQUIRED)
+ if(WEBP_FOUND)
+ set(HAVE_WEBP 1)
+ endif()
+@@ -135,7 +135,7 @@ if(WITH_JASPER)
+ if(BUILD_JASPER)
+ ocv_clear_vars(JASPER_FOUND)
+ else()
+- include(FindJasper)
++ find_package(Jasper REQUIRED)
+ endif()
+
+ if(NOT JASPER_FOUND)
+@@ -159,7 +159,7 @@ if(WITH_PNG)
+ if(BUILD_PNG)
+ ocv_clear_vars(PNG_FOUND)
+ else()
+- include(FindPNG)
++ find_package(PNG REQUIRED)
+ if(PNG_FOUND)
+ include(CheckIncludeFile)
+ check_include_file("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" HAVE_LIBPNG_PNG_H)
+@@ -191,7 +191,7 @@ if(WITH_OPENEXR)
+ if(BUILD_OPENEXR)
+ ocv_clear_vars(OPENEXR_FOUND)
+ else()
+- include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenEXR.cmake")
++ find_package(OpenEXR REQUIRED)
+ endif()
+
+ if(NOT OPENEXR_FOUND)
+@@ -207,7 +207,7 @@ endif()
+
+ # --- GDAL (optional) ---
+ if(WITH_GDAL)
+- find_package(GDAL QUIET)
++ find_package(GDAL REQUIRED)
+
+ if(NOT GDAL_FOUND)
+ set(HAVE_GDAL NO)
+@@ -219,7 +219,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)
diff --git a/ports/opencv3/0005-remove-custom-protobuf-find-package.patch b/ports/opencv3/0005-remove-custom-protobuf-find-package.patch
new file mode 100644
index 000000000..91ac137f9
--- /dev/null
+++ b/ports/opencv3/0005-remove-custom-protobuf-find-package.patch
@@ -0,0 +1,25 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -633,7 +633,10 @@ include(cmake/OpenCVFindLibsGUI.cmake)
+ include(cmake/OpenCVFindLibsVideo.cmake)
+ include(cmake/OpenCVFindLibsPerf.cmake)
+ include(cmake/OpenCVFindLAPACK.cmake)
+-include(cmake/OpenCVFindProtobuf.cmake)
++find_package(protobuf)
++if(Protobuf_LIBRARIES)
++ set(HAVE_PROTOBUF TRUE)
++endif()
+
+ # ----------------------------------------------------------------------------
+ # Detect other 3rd-party libraries/tools
+--- a/modules/dnn/CMakeLists.txt
++++ b/modules/dnn/CMakeLists.txt
+@@ -78,7 +78,7 @@ endif()
+
+ set(include_dirs ${fw_inc})
+ set(sources_options "")
+-set(libs libprotobuf ${LAPACK_LIBRARIES})
++set(libs protobuf::libprotobuf ${LAPACK_LIBRARIES})
+ if(OPENCV_DNN_OPENCL AND HAVE_OPENCL)
+ list(APPEND include_dirs ${OPENCL_INCLUDE_DIRS})
+ else()
diff --git a/ports/opencv3/0006-fix-missing-openjp2.patch b/ports/opencv3/0006-fix-missing-openjp2.patch
new file mode 100644
index 000000000..c0afb9952
--- /dev/null
+++ b/ports/opencv3/0006-fix-missing-openjp2.patch
@@ -0,0 +1,16 @@
+diff --git a/modules/imgcodecs/CMakeLists.txt b/modules/imgcodecs/CMakeLists.txt
+index 434278c..0d8f4d8 100644
+--- a/modules/imgcodecs/CMakeLists.txt
++++ b/modules/imgcodecs/CMakeLists.txt
+@@ -36,6 +36,11 @@ if(HAVE_PNG)
+ endif()
+
+ if(HAVE_GDCM)
++ if (CMAKE_BUILD_TYPE STREQUAL "Release")
++ link_directories("${CURRENT_INSTALLED_DIR}/lib")
++ else()
++ link_directories("${CURRENT_INSTALLED_DIR}/debug/lib")
++ endif()
+ ocv_include_directories(${GDCM_INCLUDE_DIRS})
+ list(APPEND GRFMT_LIBS ${GDCM_LIBRARIES})
+ endif()
diff --git a/ports/opencv3/CONTROL b/ports/opencv3/CONTROL
new file mode 100644
index 000000000..5f65d9e43
--- /dev/null
+++ b/ports/opencv3/CONTROL
@@ -0,0 +1,93 @@
+Source: opencv3
+Version: 3.4.3-10
+Build-Depends: zlib
+Homepage: https://github.com/opencv/opencv
+Description: computer vision library
+Default-Features: opengl, jpeg, png, tiff, eigen, flann
+
+Feature: opengl
+Build-Depends: opengl
+Description: opengl support for opencv
+
+Feature: dnn
+Build-Depends: protobuf
+Description: opencv_dnn module
+
+Feature: ovis
+Build-Depends: ogre
+Description: opencv_ovis module
+
+Feature: flann
+Description: opencv_flann module
+
+Feature: sfm
+Build-Depends: eigen3, glog, gflags, ceres
+Description: opencv_sfm module
+
+Feature: contrib
+Build-Depends: opencv3[flann]
+Description: opencv_contrib module
+
+Feature: cuda
+Build-Depends: cuda
+Description: CUDA support for opencv
+
+Feature: ffmpeg
+Description: prebuilt ffmpeg support for opencv
+
+Feature: ipp
+Description: Enable Intel Integrated Performance Primitives
+
+Feature: tbb
+Build-Depends: tbb
+Description: Enable Intel Threading Building Blocks
+
+Feature: qt
+Build-Depends: qt5
+Description: Qt GUI support for opencv
+
+Feature: vtk
+Build-Depends: vtk
+Description: vtk support for opencv
+
+Feature: gdcm
+Build-Depends: gdcm
+Description: GDCM support for opencv
+
+Feature: webp
+Build-Depends: libwebp
+Description: WebP support for opencv
+
+Feature: openexr
+Build-Depends: openexr
+Description: OpenEXR support for opencv
+
+Feature: tiff
+Build-Depends: tiff
+Description: TIFF support for opencv
+
+Feature: png
+Build-Depends: libpng
+Description: PNG support for opencv
+
+Feature: jpeg
+Build-Depends: libjpeg-turbo
+Description: JPEG support for opencv
+
+Feature: jasper
+Build-Depends: jasper
+Description: JPEG 2000 support for opencv
+
+Feature: eigen
+Build-Depends: eigen3
+Description: Eigen support for opencv
+
+Feature: halide
+Build-Depends: halide, opencv3[dnn]
+Description: Halide support for opencv
+
+Feature: world
+Description: Compile to a single package support for opencv
+
+Feature: nonfree
+Description: allow nonfree and unredistributable libraries
diff --git a/ports/opencv3/portfile.cmake b/ports/opencv3/portfile.cmake
new file mode 100644
index 000000000..12c4dadae
--- /dev/null
+++ b/ports/opencv3/portfile.cmake
@@ -0,0 +1,423 @@
+if (EXISTS "${CURRENT_INSTALLED_DIR}/share/opencv4")
+ message(FATAL_ERROR "OpenCV 4 is installed, please uninstall and try again:\n vcpkg remove opencv4")
+endif()
+
+include(vcpkg_common_functions)
+
+set(OPENCV_PORT_VERSION "3.4.3")
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO opencv/opencv
+ REF ${OPENCV_PORT_VERSION}
+ SHA512 d653a58eb5e3939b9fdb7438ac35f77cf4385cf72d5d22bfd21722a109e1b3283dbb9407985061b7548114f0d05c9395aac9bb62b4d2bc1f68da770a49987fef
+ HEAD_REF master
+ PATCHES
+ 0001-winrt-fixes.patch
+ 0002-install-options.patch
+ 0003-disable-downloading.patch
+ 0004-use-find-package-required.patch
+ 0005-remove-custom-protobuf-find-package.patch
+ 0006-fix-missing-openjp2.patch
+)
+
+string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" BUILD_WITH_STATIC_CRT)
+
+set(CMAKE_MODULE_PATH)
+
+set(BUILD_opencv_world OFF)
+if("world" IN_LIST FEATURES)
+ set(BUILD_opencv_world ON)
+endif()
+
+set(BUILD_opencv_dnn OFF)
+set(WITH_PROTOBUF OFF)
+if("dnn" IN_LIST FEATURES)
+ set(BUILD_opencv_dnn ON)
+ set(WITH_PROTOBUF ON)
+ set(PROTOBUF_UPDATE_FILES ON)
+ set(UPDATE_PROTO_FILES ON)
+ 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()
+
+set(BUILD_opencv_flann OFF)
+if("flann" IN_LIST FEATURES)
+ set(BUILD_opencv_flann ON)
+endif()
+
+set(BUILD_opencv_ovis OFF)
+if("ovis" IN_LIST FEATURES)
+ set(BUILD_opencv_ovis ON)
+endif()
+
+set(BUILD_opencv_sfm OFF)
+if("sfm" IN_LIST FEATURES)
+ set(BUILD_opencv_sfm ON)
+endif()
+
+set(BUILD_opencv_contrib OFF)
+if("contrib" IN_LIST FEATURES)
+ set(BUILD_opencv_contrib ON)
+
+ # Used for opencv's face module
+ 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
+ )
+
+ 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
+ )
+
+ function(download_opencv_3rdparty ID COMMIT HASH)
+ if(NOT EXISTS "${DOWNLOADS}/opencv-cache/${ID}/${COMMIT}.stamp")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://github.com/opencv/opencv_3rdparty/archive/${COMMIT}.zip"
+ FILENAME "opencv_3rdparty-${COMMIT}.zip"
+ SHA512 ${HASH}
+ )
+ vcpkg_extract_source_archive(${OCV_DOWNLOAD})
+ file(MAKE_DIRECTORY "${DOWNLOADS}/opencv-cache/${ID}")
+ file(GLOB XFEATURES2D_I ${CURRENT_BUILDTREES_DIR}/src/opencv_3rdparty-${COMMIT}/*)
+ foreach(FILE ${XFEATURES2D_I})
+ file(COPY ${FILE} DESTINATION "${DOWNLOADS}/opencv-cache/${ID}")
+ get_filename_component(XFEATURES2D_I_NAME "${FILE}" NAME)
+ file(MD5 "${FILE}" FILE_HASH)
+ file(RENAME "${DOWNLOADS}/opencv-cache/${ID}/${XFEATURES2D_I_NAME}" "${DOWNLOADS}/opencv-cache/${ID}/${FILE_HASH}-${XFEATURES2D_I_NAME}")
+ endforeach()
+ file(WRITE "${DOWNLOADS}/opencv-cache/${ID}/${COMMIT}.stamp")
+ endif()
+ endfunction()
+
+ # Used for opencv's xfeature2d module
+ download_opencv_3rdparty(
+ xfeatures2d/boostdesc
+ 34e4206aef44d50e6bbcd0ab06354b52e7466d26
+ 2ccdc8fb59da55eabc73309a80a4d3b1e73e2341027cdcdd2d714e0f519e60f243f38f79b13ed3de32f595aa23e4f86418eed42e741f32a81b1e6e0879190601
+ )
+
+ # Used for opencv's xfeature2d module
+ download_opencv_3rdparty(
+ xfeatures2d/vgg
+ fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d
+ 7051f5d6ccb938d296b919dd6d5dcddc5afb527aed456639c9984276a8f64565c084d96a72499a7756f127f8d2b1ce9ab70e4cbb3f89c4e16f82296c2a15daed
+ )
+endif()
+
+set(WITH_CUDA OFF)
+if("cuda" IN_LIST FEATURES)
+ set(WITH_CUDA ON)
+endif()
+
+set(WITH_FFMPEG OFF)
+if("ffmpeg" IN_LIST FEATURES)
+ set(WITH_FFMPEG ON)
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/8041bd6f5ad37045c258904ba3030bb3442e3911/ffmpeg/opencv_ffmpeg.dll"
+ FILENAME "opencv-cache/ffmpeg/fa5a2a4e2f37defcb95bde8ed145c2b3-opencv_ffmpeg.dll"
+ SHA512 875f922e1d9fc2fe7c8e879ede35b1001b6ad8b3c4d71feb3823421ce861f580df3418c791315b23870fcb0378d297b01e0761d3f65277ff11ec2fef8c0b08b7
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/8041bd6f5ad37045c258904ba3030bb3442e3911/ffmpeg/opencv_ffmpeg_64.dll"
+ FILENAME "opencv-cache/ffmpeg/2cc08fc4fef8199fe80e0f126684834f-opencv_ffmpeg_64.dll"
+ SHA512 4e74aa4cb115f103b929f93bbc8dcf675de7d0c7916f8f0a80ac46761134b088634be95f959ce5827753ae9ecb2365ca40440dfbb9a9bf89f22ee11b6c8342b3
+ )
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/8041bd6f5ad37045c258904ba3030bb3442e3911/ffmpeg/ffmpeg_version.cmake"
+ FILENAME "opencv-cache/ffmpeg/3b90f67f4b429e77d3da36698cef700c-ffmpeg_version.cmake"
+ SHA512 7d0142c30ac6f6260c1bcabc22753030fd25a708477fa28053e8df847c366967d3b93a8ac14af19a2b7b73d9f8241749a431458faf21a0c8efc7d6d99eecfdcf
+ )
+endif()
+
+set(WITH_IPP OFF)
+if("ipp" IN_LIST FEATURES)
+ set(WITH_IPP ON)
+
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/bdb7bb85f34a8cb0d35e40a81f58da431aa1557a/ippicv/ippicv_2017u3_win_intel64_general_20180518.zip"
+ FILENAME "opencv-cache/ippicv/915ff92958089ede8ea532d3c4fe7187-ippicv_2017u3_win_intel64_general_20180518.zip"
+ SHA512 8aa08292d542d521c042864446e47a7a6bdbf3896d86fc7b43255459c24a2e9f34a4e9b177023d178fed7a2e82a9db410f89d81375a542d049785d263f46c64d
+ )
+ else()
+ vcpkg_download_distfile(OCV_DOWNLOAD
+ URLS "https://raw.githubusercontent.com/opencv/opencv_3rdparty/bdb7bb85f34a8cb0d35e40a81f58da431aa1557a/ippicv/ippicv_2017u3_win_ia32_general_20180518.zip"
+ FILENAME "opencv-cache/ippicv/928168c2d99ab284047dfcfb7a821d91-ippicv_2017u3_win_ia32_general_20180518.zip"
+ SHA512 b89b0fb739152303cafc9fb064fa8b24fd94850697137ccbb5c1e344e0f5094115603a5e3be3a25f85d0faefc5c53429a7d65da0142d012ada41e8db2bcdd6b7
+ )
+ endif()
+endif()
+
+set(WITH_TBB OFF)
+if("tbb" IN_LIST FEATURES)
+ set(WITH_TBB ON)
+endif()
+
+set(WITH_QT OFF)
+if("qt" IN_LIST FEATURES)
+ set(WITH_QT ON)
+endif()
+
+set(WITH_VTK OFF)
+if("vtk" IN_LIST FEATURES)
+ set(WITH_VTK ON)
+endif()
+
+set(WITH_WEBP OFF)
+if("webp" IN_LIST FEATURES)
+ set(WITH_WEBP ON)
+ list(APPEND CMAKE_MODULE_PATH ${CURRENT_INSTALLED_DIR}/share/libwebp)
+endif()
+
+set(WITH_GDCM OFF)
+if("gdcm" IN_LIST FEATURES)
+ set(WITH_GDCM ON)
+endif()
+
+set(WITH_OPENGL OFF)
+if("opengl" IN_LIST FEATURES)
+ set(WITH_OPENGL ON)
+endif()
+
+set(WITH_OPENEXR OFF)
+if("openexr" IN_LIST FEATURES)
+ set(WITH_OPENEXR ON)
+ list(APPEND CMAKE_MODULE_PATH ${CURRENT_INSTALLED_DIR}/share/openexr)
+endif()
+
+set(WITH_MSMF ON)
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ set(WITH_MSMF OFF)
+endif()
+
+set(WITH_TIFF OFF)
+if("tiff" IN_LIST FEATURES)
+ set(WITH_TIFF ON)
+endif()
+
+set(WITH_JPEG OFF)
+if("jpeg" IN_LIST FEATURES)
+ set(WITH_JPEG ON)
+endif()
+
+set(WITH_JASPER OFF)
+if("jasper" IN_LIST FEATURES)
+ set(WITH_JASPER ON)
+endif()
+
+set(WITH_PNG OFF)
+if("png" IN_LIST FEATURES)
+ set(WITH_PNG ON)
+endif()
+
+set(WITH_EIGEN OFF)
+if("eigen" IN_LIST FEATURES)
+ set(WITH_EIGEN ON)
+endif()
+
+set(WITH_HALIDE OFF)
+if("halide" IN_LIST FEATURES)
+ set(WITH_HALIDE ON)
+endif()
+
+set(OPENCV_ENABLE_NONFREE OFF)
+if("nonfree" IN_LIST FEATURES)
+ set(OPENCV_ENABLE_NONFREE ON)
+endif()
+
+if(BUILD_opencv_contrib)
+ vcpkg_from_github(
+ OUT_SOURCE_PATH CONTRIB_SOURCE_PATH
+ REPO opencv/opencv_contrib
+ REF ${OPENCV_PORT_VERSION}
+ SHA512 456c6f878fb3bd5459f6430405cf05c609431f8d7db743aa699fc75c305d019682ee3a804bf0cf5107597dd1dbbb69b08be3535a0e6c717e4773ed7c05d08e59
+ HEAD_REF master
+ )
+ set(BUILD_WITH_CONTRIB_FLAG "-DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_SOURCE_PATH}/modules")
+endif()
+
+set(WITH_ZLIB ON)
+set(BUILD_opencv_line_descriptor ON)
+set(BUILD_opencv_saliency ON)
+set(BUILD_opencv_bgsegm ON)
+if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm")
+ set(BUILD_opencv_line_descriptor OFF)
+ set(BUILD_opencv_saliency OFF)
+ set(BUILD_opencv_bgsegm OFF)
+endif()
+
+string(REPLACE ";" "\\\\\;" CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
+
+vcpkg_configure_cmake(
+ PREFER_NINJA
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ # Ungrouped Entries
+ -DOpenCV_DISABLE_ARCH_PATH=ON
+ # Do not build docs/examples
+ -DBUILD_DOCS=OFF
+ -DBUILD_EXAMPLES=OFF
+ # Do not build integrated libraries, use external ones whenever possible
+ -DBUILD_JASPER=OFF
+ -DBUILD_JPEG=OFF
+ -DBUILD_OPENEXR=OFF
+ -DBUILD_PACKAGE=OFF
+ -DBUILD_PERF_TESTS=OFF
+ -DBUILD_PNG=OFF
+ -DBUILD_PROTOBUF=OFF
+ -DBUILD_TESTS=OFF
+ -DBUILD_TIFF=OFF
+ -DBUILD_WEBP=OFF
+ -DBUILD_WITH_DEBUG_INFO=ON
+ -DBUILD_WITH_STATIC_CRT=${BUILD_WITH_STATIC_CRT}
+ -DBUILD_ZLIB=OFF
+ # Select which OpenCV modules should be built
+ -DBUILD_opencv_apps=OFF
+ -DBUILD_opencv_bgsegm=${BUILD_opencv_bgsegm}
+ -DBUILD_opencv_dnn=${BUILD_opencv_dnn}
+ -DBUILD_opencv_flann=${BUILD_opencv_flann}
+ -DBUILD_opencv_line_descriptor=${BUILD_opencv_line_descriptor}
+ -DBUILD_opencv_ovis=${BUILD_opencv_ovis}
+ -DBUILD_opencv_python2=OFF
+ -DBUILD_opencv_python3=OFF
+ -DBUILD_opencv_saliency=${BUILD_opencv_saliency}
+ -DBUILD_opencv_sfm=${BUILD_opencv_sfm}
+ -DBUILD_opencv_world=${BUILD_opencv_world}
+ # PROTOBUF
+ -DPROTOBUF_UPDATE_FILES=${PROTOBUF_UPDATE_FILES}
+ -DUPDATE_PROTO_FILES=${UPDATE_PROTO_FILES}
+ # CMAKE
+ -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_JNI=ON
+ "-DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH}"
+ # ENABLE
+ -DENABLE_CXX11=ON
+ -DENABLE_PYLINT=OFF
+ -DOPENCV_ENABLE_NONFREE=${OPENCV_ENABLE_NONFREE}
+ # INSTALL
+ -DINSTALL_FORCE_UNIX_PATHS=ON
+ -DINSTALL_LICENSE=OFF
+ # OPENCV
+ -DOPENCV_CONFIG_INSTALL_PATH=share/opencv
+ "-DOPENCV_DOWNLOAD_PATH=${DOWNLOADS}/opencv-cache"
+ ${BUILD_WITH_CONTRIB_FLAG}
+ -DOPENCV_OTHER_INSTALL_PATH=share/opencv
+ # WITH
+ -DWITH_CUBLAS=${WITH_CUDA}
+ -DWITH_CUDA=${WITH_CUDA}
+ -DWITH_EIGEN=${WITH_EIGEN}
+ -DWITH_FFMPEG=${WITH_FFMPEG}
+ -DWITH_GDCM=${WITH_GDCM}
+ -DWITH_HALIDE=${WITH_HALIDE}
+ -DWITH_IPP=${WITH_IPP}
+ -DWITH_JASPER=${WITH_JASPER}
+ -DWITH_JPEG=${WITH_JPEG}
+ -DWITH_LAPACK=OFF
+ -DWITH_MATLAB=OFF
+ -DWITH_MSMF=${WITH_MSMF}
+ -DWITH_OPENCLAMDBLAS=OFF
+ -DWITH_OPENEXR=${WITH_OPENEXR}
+ -DWITH_OPENGL=${WITH_OPENGL}
+ -DWITH_PNG=${WITH_PNG}
+ -DWITH_PROTOBUF=${WITH_PROTOBUF}
+ -DWITH_QT=${WITH_QT}
+ -DWITH_TBB=${WITH_TBB}
+ -DWITH_TIFF=${WITH_TIFF}
+ -DWITH_VTK=${WITH_VTK}
+ -DWITH_WEBP=${WITH_WEBP}
+ -DWITH_ZLIB=${WITH_ZLIB}
+ -DCURRENT_INSTALLED_DIR=${CURRENT_INSTALLED_DIR}
+ OPTIONS_DEBUG
+ -DINSTALL_HEADERS=OFF
+ -DINSTALL_OTHER=OFF
+)
+
+vcpkg_install_cmake()
+
+if(VCPKG_PLATFORM_TOOLSET STREQUAL "v141")
+ set(OpenCV_RUNTIME vc15)
+else()
+ set(OpenCV_RUNTIME vc14)
+endif()
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(OpenCV_ARCH x64)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ set(OpenCV_ARCH ARM)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ set(OpenCV_ARCH ARM64)
+else()
+ set(OpenCV_ARCH x86)
+endif()
+
+file(GLOB BIN_AND_LIB ${CURRENT_PACKAGES_DIR}/${OpenCV_ARCH}/${OpenCV_RUNTIME}/*)
+file(COPY ${BIN_AND_LIB} DESTINATION ${CURRENT_PACKAGES_DIR})
+file(GLOB DEBUG_BIN_AND_LIB ${CURRENT_PACKAGES_DIR}/debug/${OpenCV_ARCH}/${OpenCV_RUNTIME}/*)
+file(COPY ${DEBUG_BIN_AND_LIB} DESTINATION ${CURRENT_PACKAGES_DIR}/debug)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/${OpenCV_ARCH})
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/${OpenCV_ARCH})
+
+file(GLOB STATICLIB ${CURRENT_PACKAGES_DIR}/staticlib/*)
+if(STATICLIB)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib)
+ file(COPY ${STATICLIB} DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/staticlib)
+endif()
+file(GLOB STATICLIB ${CURRENT_PACKAGES_DIR}/debug/staticlib/*)
+if(STATICLIB)
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib)
+ file(COPY ${STATICLIB} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
+ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/staticlib)
+endif()
+
+file(READ ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVConfig.cmake OPENCV_CONFIG)
+string(REPLACE "/staticlib/"
+ "/lib/" OPENCV_CONFIG "${OPENCV_CONFIG}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVConfig.cmake "${OPENCV_CONFIG}")
+
+file(READ ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules-release.cmake OPENCV_CONFIG_LIB)
+string(REPLACE "/staticlib/"
+ "/lib/" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules-release.cmake "${OPENCV_CONFIG_LIB}")
+
+file(READ ${CURRENT_PACKAGES_DIR}/debug/share/opencv/OpenCVModules-debug.cmake OPENCV_CONFIG_LIB)
+string(REPLACE "/staticlib/"
+ "/lib/" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
+string(REPLACE "PREFIX}/lib"
+ "PREFIX}/debug/lib" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
+string(REPLACE "PREFIX}/bin"
+ "PREFIX}/debug/bin" OPENCV_CONFIG_LIB "${OPENCV_CONFIG_LIB}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules-debug.cmake "${OPENCV_CONFIG_LIB}")
+
+file(RENAME ${CURRENT_PACKAGES_DIR}/debug/share/opencv/OpenCVModules.cmake ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules.cmake)
+
+file(READ ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules.cmake OPENCV_MODULES)
+string(REPLACE "${CURRENT_INSTALLED_DIR}"
+ "\${_VCPKG_INSTALLED_DIR}/\${VCPKG_TARGET_TRIPLET}" OPENCV_MODULES "${OPENCV_MODULES}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules.cmake "${OPENCV_MODULES}")
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(READ ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules.cmake OPENCV_MODULES)
+ string(REPLACE "set(CMAKE_IMPORT_FILE_VERSION 1)"
+ "set(CMAKE_IMPORT_FILE_VERSION 1)
+ find_package(TIFF REQUIRED)" OPENCV_MODULES "${OPENCV_MODULES}")
+ file(WRITE ${CURRENT_PACKAGES_DIR}/share/opencv/OpenCVModules.cmake "${OPENCV_MODULES}")
+endif()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/opencv)
+
+vcpkg_copy_pdbs()
+
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/opencv3)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/opencv3/LICENSE ${CURRENT_PACKAGES_DIR}/share/opencv3/copyright)
+
+set(VCPKG_POLICY_ALLOW_OBSOLETE_MSVCRT enabled)
diff --git a/ports/opencv3/usage b/ports/opencv3/usage
new file mode 100644
index 000000000..1c30e5fea
--- /dev/null
+++ b/ports/opencv3/usage
@@ -0,0 +1,5 @@
+The package opencv provides CMake integration:
+
+ find_package(OpenCV REQUIRED)
+ target_include_directories(main PRIVATE ${OpenCV_INCLUDE_DIRS})
+ target_link_libraries(main PRIVATE ${OpenCV_LIBS})