[OpenCV] add python feature (#21854)

* [OpenCV] add python feature

* fix references

* fix references

* [OpenCV] add feature to main port

* [OpenCV] add feature to main port

* fix references

* trying to improve compatibility with *nix env

* fix references

* remove python remnants from vcpkg_checK_features

* fix references
This commit is contained in:
Stefano Sinigardi 2021-12-08 23:03:00 +01:00 committed by GitHub
parent 501df2f7e0
commit 54f55a5268
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 255 additions and 12 deletions

View File

@ -1,6 +1,7 @@
{
"name": "opencv",
"version": "4.5.4",
"port-version": 1,
"description": "Computer vision library",
"homepage": "https://github.com/opencv/opencv",
"dependencies": [
@ -290,6 +291,18 @@
}
]
},
"python": {
"description": "Python wrapper support for opencv",
"dependencies": [
{
"name": "opencv4",
"default-features": false,
"features": [
"python"
]
}
]
},
"qt": {
"description": "Qt GUI support for opencv",
"dependencies": [

View File

@ -114,11 +114,14 @@
if(GIT_EXECUTABLE)
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty --match "2.[0-9].[0-9]*"
@@ -501,7 +470,6 @@ if(BUILD_DOCS)
@@ -501,7 +470,9 @@ if(BUILD_DOCS)
endif(BUILD_DOCS)
# --- Python Support ---
-include(cmake/OpenCVDetectPython.cmake)
+if(WITH_PYTHON)
+ include(cmake/OpenCVDetectPython.cmake)
+endif()
# --- Java Support ---
include(cmake/OpenCVDetectApacheAnt.cmake)

View File

@ -68,6 +68,57 @@ if("ffmpeg" IN_LIST FEATURES)
endif()
endif()
set(WITH_PYTHON OFF)
if("python" IN_LIST FEATURES)
set(WITH_PYTHON ON)
vcpkg_find_acquire_program(PYTHON2)
get_filename_component(PYTHON2_DIR "${PYTHON2}" DIRECTORY)
vcpkg_add_to_path("${PYTHON2_DIR}")
vcpkg_add_to_path("${PYTHON2_DIR}/Scripts")
set(ENV{PYTHON} "${PYTHON2}")
function(vcpkg_get_python_package PYTHON_DIR )
cmake_parse_arguments(PARSE_ARGV 0 _vgpp "" "PYTHON_EXECUTABLE" "PACKAGES")
if(NOT _vgpp_PYTHON_EXECUTABLE)
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires parameter PYTHON_EXECUTABLE!")
endif()
if(NOT _vgpp_PACKAGES)
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires parameter PACKAGES!")
endif()
if(NOT _vgpp_PYTHON_DIR)
get_filename_component(_vgpp_PYTHON_DIR "${_vgpp_PYTHON_EXECUTABLE}" DIRECTORY)
endif()
if (WIN32)
set(PYTHON_OPTION "")
else()
set(PYTHON_OPTION "--user")
endif()
if(NOT EXISTS "${_vgpp_PYTHON_DIR}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}")
if(NOT EXISTS "${_vgpp_PYTHON_DIR}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}")
vcpkg_from_github(
OUT_SOURCE_PATH PYFILE_PATH
REPO pypa/get-pip
REF 309a56c5fd94bd1134053a541cb4657a4e47e09d #2019-08-25
SHA512 bb4b0745998a3205cd0f0963c04fb45f4614ba3b6fcbe97efe8f8614192f244b7ae62705483a5305943d6c8fedeca53b2e9905aed918d2c6106f8a9680184c7a
HEAD_REF master
)
execute_process(COMMAND "${_vgpp_PYTHON_EXECUTABLE}" "${PYFILE_PATH}/get-pip.py" ${PYTHON_OPTION})
endif()
foreach(_package IN LISTS _vgpp_PACKAGES)
execute_process(COMMAND "${_vgpp_PYTHON_DIR}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}" install ${_package} ${PYTHON_OPTION})
endforeach()
else()
foreach(_package IN LISTS _vgpp_PACKAGES)
execute_process(COMMAND "${_vgpp_PYTHON_DIR}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}" ${_package})
endforeach()
endif()
endfunction()
vcpkg_get_python_package(PYTHON_EXECUTABLE "${PYTHON2}" PACKAGES numpy)
endif()
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
@ -101,6 +152,7 @@ vcpkg_cmake_configure(
-DWITH_MSMF=${WITH_MSMF}
-DWITH_OPENCLAMDBLAS=OFF
-DWITH_OPENMP=OFF
-DWITH_PYTHON=${WITH_PYTHON}
-DWITH_ZLIB=ON
-WITH_GTK=${WITH_GTK}
-DWITH_CUBLAS=OFF # newer libcublas cannot be found by the old cuda cmake script in opencv2, requires a fix

View File

@ -1,7 +1,7 @@
{
"name": "opencv2",
"version": "2.4.13.7",
"port-version": 8,
"port-version": 9,
"description": "computer vision library",
"homepage": "https://github.com/opencv/opencv",
"dependencies": [
@ -105,6 +105,9 @@
"libpng"
]
},
"python": {
"description": "Python wrapper support for opencv"
},
"qt": {
"description": "Qt GUI support for opencv",
"dependencies": [

View File

@ -5,7 +5,7 @@
# --- Python Support ---
-if(NOT IOS)
+if(FALSE)
+if(WITH_PYTHON)
include(cmake/OpenCVDetectPython.cmake)
endif()

View File

@ -0,0 +1,18 @@
--- a/cmake/OpenCVDetectPython.cmake
+++ b/cmake/OpenCVDetectPython.cmake
@@ -268,15 +268,6 @@ if(OPENCV_PYTHON_SKIP_DETECTION)
return()
endif()
-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)
-
-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

View File

@ -25,6 +25,7 @@ vcpkg_from_github(
0008-devendor-quirc.patch
0009-fix-protobuf.patch
0010-fix-uwp-tiff-imgcodecs.patch
0011-remove-python2.patch
)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
@ -68,8 +69,7 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"world" BUILD_opencv_world
)
# Cannot use vcpkg_check_features() for "dnn", "gtk", "ipp", ovis", "qt", "tbb"
# As the respective value of their variables can be unset conditionally.
# Cannot use vcpkg_check_features() for "dnn", "gtk", "ipp", ovis", "python", "qt", "tbb"
set(BUILD_opencv_dnn OFF)
if("dnn" IN_LIST FEATURES)
if(NOT VCPKG_TARGET_IS_ANDROID)
@ -108,6 +108,57 @@ if("tbb" IN_LIST FEATURES)
set(WITH_TBB ON)
endif()
set(WITH_PYTHON OFF)
if("python" IN_LIST FEATURES)
set(WITH_PYTHON ON)
vcpkg_find_acquire_program(PYTHON3)
get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY)
vcpkg_add_to_path("${PYTHON3_DIR}")
vcpkg_add_to_path("${PYTHON3_DIR}/Scripts")
set(ENV{PYTHON} "${PYTHON3}")
function(vcpkg_get_python_package PYTHON_DIR )
cmake_parse_arguments(PARSE_ARGV 0 _vgpp "" "PYTHON_EXECUTABLE" "PACKAGES")
if(NOT _vgpp_PYTHON_EXECUTABLE)
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires parameter PYTHON_EXECUTABLE!")
endif()
if(NOT _vgpp_PACKAGES)
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires parameter PACKAGES!")
endif()
if(NOT _vgpp_PYTHON_DIR)
get_filename_component(_vgpp_PYTHON_DIR "${_vgpp_PYTHON_EXECUTABLE}" DIRECTORY)
endif()
if (WIN32)
set(PYTHON_OPTION "")
else()
set(PYTHON_OPTION "--user")
endif()
if(NOT EXISTS "${_vgpp_PYTHON_DIR}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}")
if(NOT EXISTS "${_vgpp_PYTHON_DIR}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}")
vcpkg_from_github(
OUT_SOURCE_PATH PYFILE_PATH
REPO pypa/get-pip
REF 309a56c5fd94bd1134053a541cb4657a4e47e09d #2019-08-25
SHA512 bb4b0745998a3205cd0f0963c04fb45f4614ba3b6fcbe97efe8f8614192f244b7ae62705483a5305943d6c8fedeca53b2e9905aed918d2c6106f8a9680184c7a
HEAD_REF master
)
execute_process(COMMAND "${_vgpp_PYTHON_EXECUTABLE}" "${PYFILE_PATH}/get-pip.py" ${PYTHON_OPTION})
endif()
foreach(_package IN LISTS _vgpp_PACKAGES)
execute_process(COMMAND "${_vgpp_PYTHON_DIR}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}" install ${_package} ${PYTHON_OPTION})
endforeach()
else()
foreach(_package IN LISTS _vgpp_PACKAGES)
execute_process(COMMAND "${_vgpp_PYTHON_DIR}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}" ${_package})
endforeach()
endif()
endfunction()
vcpkg_get_python_package(PYTHON_EXECUTABLE "${PYTHON3}" PACKAGES numpy)
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"
@ -349,6 +400,7 @@ vcpkg_cmake_configure(
-DWITH_MSMF=${WITH_MSMF}
-DWITH_OPENMP=OFF
-DWITH_PROTOBUF=${BUILD_opencv_flann}
-DWITH_PYTHON=${WITH_PYTHON}
-DWITH_OPENCLAMDBLAS=OFF
-DWITH_TBB=${WITH_TBB}
-DWITH_OPENJPEG=OFF

View File

@ -1,6 +1,7 @@
{
"name": "opencv3",
"version": "3.4.16",
"port-version": 1,
"description": "computer vision library",
"homepage": "https://github.com/opencv/opencv",
"dependencies": [
@ -202,6 +203,9 @@
"libpng"
]
},
"python": {
"description": "Python wrapper support for opencv"
},
"qt": {
"description": "Qt GUI support for opencv",
"dependencies": [

View File

@ -5,7 +5,7 @@
# --- Python Support ---
-if(NOT IOS)
+if(0)
+if(WITH_PYTHON)
include(cmake/OpenCVDetectPython.cmake)
endif()

View File

@ -0,0 +1,18 @@
--- a/cmake/OpenCVDetectPython.cmake
+++ b/cmake/OpenCVDetectPython.cmake
@@ -268,15 +268,6 @@ if(OPENCV_PYTHON_SKIP_DETECTION)
return()
endif()
-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)
-
-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

View File

@ -25,6 +25,7 @@ vcpkg_from_github(
0008-devendor-quirc.patch
0009-fix-protobuf.patch
0010-fix-uwp-tiff-imgcodecs.patch
0011-remove-python2.patch
)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
@ -70,8 +71,7 @@ vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"world" BUILD_opencv_world
)
# Cannot use vcpkg_check_features() for "dnn", "gtk", ipp", "openmp", "ovis", "qt, "tbb"
# As the respective value of their variables can be unset conditionally.
# Cannot use vcpkg_check_features() for "dnn", "gtk", ipp", "openmp", "ovis", "python", "qt, "tbb"
set(BUILD_opencv_dnn OFF)
if("dnn" IN_LIST FEATURES)
if(NOT VCPKG_TARGET_IS_ANDROID)
@ -125,6 +125,57 @@ if("tbb" IN_LIST FEATURES)
set(WITH_TBB ON)
endif()
set(WITH_PYTHON OFF)
if("python" IN_LIST FEATURES)
set(WITH_PYTHON ON)
vcpkg_find_acquire_program(PYTHON3)
get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY)
vcpkg_add_to_path("${PYTHON3_DIR}")
vcpkg_add_to_path("${PYTHON3_DIR}/Scripts")
set(ENV{PYTHON} "${PYTHON3}")
function(vcpkg_get_python_package PYTHON_DIR )
cmake_parse_arguments(PARSE_ARGV 0 _vgpp "" "PYTHON_EXECUTABLE" "PACKAGES")
if(NOT _vgpp_PYTHON_EXECUTABLE)
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires parameter PYTHON_EXECUTABLE!")
endif()
if(NOT _vgpp_PACKAGES)
message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} requires parameter PACKAGES!")
endif()
if(NOT _vgpp_PYTHON_DIR)
get_filename_component(_vgpp_PYTHON_DIR "${_vgpp_PYTHON_EXECUTABLE}" DIRECTORY)
endif()
if (WIN32)
set(PYTHON_OPTION "")
else()
set(PYTHON_OPTION "--user")
endif()
if(NOT EXISTS "${_vgpp_PYTHON_DIR}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}")
if(NOT EXISTS "${_vgpp_PYTHON_DIR}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}")
vcpkg_from_github(
OUT_SOURCE_PATH PYFILE_PATH
REPO pypa/get-pip
REF 309a56c5fd94bd1134053a541cb4657a4e47e09d #2019-08-25
SHA512 bb4b0745998a3205cd0f0963c04fb45f4614ba3b6fcbe97efe8f8614192f244b7ae62705483a5305943d6c8fedeca53b2e9905aed918d2c6106f8a9680184c7a
HEAD_REF master
)
execute_process(COMMAND "${_vgpp_PYTHON_EXECUTABLE}" "${PYFILE_PATH}/get-pip.py" ${PYTHON_OPTION})
endif()
foreach(_package IN LISTS _vgpp_PACKAGES)
execute_process(COMMAND "${_vgpp_PYTHON_DIR}/Scripts/pip${VCPKG_HOST_EXECUTABLE_SUFFIX}" install ${_package} ${PYTHON_OPTION})
endforeach()
else()
foreach(_package IN LISTS _vgpp_PACKAGES)
execute_process(COMMAND "${_vgpp_PYTHON_DIR}/easy_install${VCPKG_HOST_EXECUTABLE_SUFFIX}" ${_package})
endforeach()
endif()
endfunction()
vcpkg_get_python_package(PYTHON_EXECUTABLE "${PYTHON3}" PACKAGES numpy)
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"
@ -404,6 +455,7 @@ vcpkg_cmake_configure(
-DWITH_IPP=${WITH_IPP}
-DWITH_MATLAB=OFF
-DWITH_MSMF=${WITH_MSMF}
-DWITH_PYTHON=${WITH_PYTHON}
-DWITH_OPENMP=${WITH_OPENMP}
-DWITH_PROTOBUF=${BUILD_opencv_dnn}
-DWITH_OPENCLAMDBLAS=OFF

View File

@ -1,6 +1,7 @@
{
"name": "opencv4",
"version": "4.5.4",
"port-version": 1,
"description": "computer vision library",
"homepage": "https://github.com/opencv/opencv",
"dependencies": [
@ -208,6 +209,9 @@
"libpng"
]
},
"python": {
"description": "Python wrapper support for opencv"
},
"qt": {
"description": "Qt GUI support for opencv",
"dependencies": [

View File

@ -17,6 +17,7 @@
"jpeg",
"nonfree",
"png",
"python",
"quirc",
"tiff",
"webp"
@ -24,6 +25,7 @@
},
{
"name": "opencv",
"default-features": false,
"features": [
"gtk"
],
@ -31,6 +33,7 @@
},
{
"name": "opencv",
"default-features": false,
"features": [
"cuda",
"cudnn",
@ -43,6 +46,7 @@
},
{
"name": "opencv",
"default-features": false,
"features": [
"gdcm",
"ipp",

View File

@ -4938,19 +4938,19 @@
},
"opencv": {
"baseline": "4.5.4",
"port-version": 0
"port-version": 1
},
"opencv2": {
"baseline": "2.4.13.7",
"port-version": 8
"port-version": 9
},
"opencv3": {
"baseline": "3.4.16",
"port-version": 0
"port-version": 1
},
"opencv4": {
"baseline": "4.5.4",
"port-version": 0
"port-version": 1
},
"opendnp3": {
"baseline": "3.1.1",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "c120b015f37bc79900712d64e8ca612d71be22cc",
"version": "4.5.4",
"port-version": 1
},
{
"git-tree": "7aaa340439ab4742d8e328a1069cd0923eba1072",
"version": "4.5.4",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "e02e468ae088086be3b3579366e0bc4c3c8be6cc",
"version": "2.4.13.7",
"port-version": 9
},
{
"git-tree": "e2c00be603dbf06283820dc2b2f6c04a77728a5f",
"version": "2.4.13.7",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "0bf28e1704eae1d6f24b98fe884b27c71db798a7",
"version": "3.4.16",
"port-version": 1
},
{
"git-tree": "e55e479a0240978c0d0dee3cb79619e93b3825a3",
"version": "3.4.16",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "6a5d8c17cfd9a4e3caa7acf4625876fec8880fe2",
"version": "4.5.4",
"port-version": 1
},
{
"git-tree": "35b4405de16e9116ce1e698827c2254a0b02b963",
"version": "4.5.4",