diff --git a/.github/workflows/build_wheels_windows.yml b/.github/workflows/build_wheels_windows.yml index dc91fc5a4..258417144 100644 --- a/.github/workflows/build_wheels_windows.yml +++ b/.github/workflows/build_wheels_windows.yml @@ -43,8 +43,10 @@ jobs: cuda-version: ['12'] include: # CUDA 12: Supports Maxwell (5.0) through Blackwell (10.0) + # NOTE: windows-2025 images now ship Visual Studio 2026 (v18) without VS2022, + # which CUDA 12.9 nvcc cannot use as host compiler; windows-2022 keeps VS2022 (v143). - cuda-version: '12' - runs-on: 'windows-2025' + runs-on: 'windows-2022' cuda-installer: 'cuda_12.9.1_windows_network.exe' cuda-path-version: 'v12.9' cudnn-archive: 'cudnn-windows-x86_64-9.18.1.3_cuda12-archive.zip' @@ -57,7 +59,7 @@ jobs: # TODO: Re-enable CUDA 13 after updating to OpenCV 4.13+ # CUDA 13: Supports Turing (7.5) through Blackwell (12.0) # - cuda-version: '13' - # runs-on: 'windows-2025' + # runs-on: 'windows-2022' # cuda-installer: 'cuda_13.1.1_windows_network.exe' # cuda-path-version: 'v13.1' # cudnn-archive: 'cudnn-windows-x86_64-9.18.1.3_cuda13-archive.zip' @@ -84,7 +86,7 @@ jobs: rm -rf ./.??* || true working-directory: ${{ github.workspace }} - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: submodules: false fetch-depth: 0 @@ -220,14 +222,14 @@ jobs: path: _skbuild key: ${{ runner.os }}-${{ matrix.python-version }}-cuda${{ matrix.cuda-version }}-${{ hashFiles('**/CMakeLists.txt') }} - name: Saving all wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: wheel-cuda${{ matrix.cuda-version }}-${{ matrix.platform }} path: wheelhouse/opencv* Test: needs: [Build] - runs-on: windows-2025 + runs-on: windows-2022 defaults: run: shell: cmd @@ -249,7 +251,7 @@ jobs: rm -rf ./.??* || true working-directory: ${{ github.workspace }} - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: submodules: true fetch-depth: 0 @@ -259,7 +261,7 @@ jobs: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.platform }} - name: Download a wheel accordingly to matrix - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: wheel-cuda${{ matrix.cuda-version }}-${{ matrix.platform }} path: wheelhouse/ diff --git a/.github/workflows/cache_nvidia_deps.yml b/.github/workflows/cache_nvidia_deps.yml index bf5699a25..c29aa7301 100644 --- a/.github/workflows/cache_nvidia_deps.yml +++ b/.github/workflows/cache_nvidia_deps.yml @@ -8,7 +8,7 @@ on: jobs: cache-deps: - runs-on: windows-2025 + runs-on: windows-2022 strategy: matrix: include: diff --git a/LICENSE-3RD-PARTY.txt b/LICENSE-3RD-PARTY.txt index 68ec98078..6b7dbc336 100644 --- a/LICENSE-3RD-PARTY.txt +++ b/LICENSE-3RD-PARTY.txt @@ -4888,3 +4888,65 @@ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +KAZE Features library is redistributed within all opencv-python packages. + +Copyright (c) 2012, Pablo Fernández Alcantarilla +All Rights Reserved + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the copyright holders nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +AKAZE Features library is redistributed within all opencv-python packages. + +Copyright (c) 2014, Pablo Fernandez Alcantarilla, Jesus Nuevo +All Rights Reserved + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the copyright holders nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/multibuild b/multibuild index 0714f52ea..4546f4d48 160000 --- a/multibuild +++ b/multibuild @@ -1 +1 @@ -Subproject commit 0714f52ea1ea57a0bc33c7f8b74bae457e1fa8e0 +Subproject commit 4546f4d4820ffd0104b872c3b6187260b3e64edc diff --git a/opencv b/opencv index 49486f61f..b4c5ec404 160000 --- a/opencv +++ b/opencv @@ -1 +1 @@ -Subproject commit 49486f61fb25722cbcf586b7f4320921d46fb38e +Subproject commit b4c5ec4042f097e2a5b386b9d413ec7333d0a184 diff --git a/opencv_contrib b/opencv_contrib index d943e1d61..d99ad2a18 160000 --- a/opencv_contrib +++ b/opencv_contrib @@ -1 +1 @@ -Subproject commit d943e1d61c8bc556a13783e1546ee7c1a9e0b1cf +Subproject commit d99ad2a188210cc35067c2e60076eed7c2442bc3 diff --git a/opencv_extra b/opencv_extra index b6db059e9..c322faf6f 160000 --- a/opencv_extra +++ b/opencv_extra @@ -1 +1 @@ -Subproject commit b6db059e9b80072d80d009d2ab344f8606a8e964 +Subproject commit c322faf6f5d10649c4215a16203b923e36c4ba6f diff --git a/patches/patchQtPlugins b/patches/patchQtPlugins index b274aa08b..efb20a4ca 100644 --- a/patches/patchQtPlugins +++ b/patches/patchQtPlugins @@ -9,7 +9,7 @@ index 4c0b3880fc..dffa0a4caa 100644 + install(DIRECTORY ${Qt5_DIR}/../../../plugins DESTINATION lib/qt) + endif() + if(UNIX AND NOT APPLE) -+ install(DIRECTORY /opt/Qt5.15.16/plugins DESTINATION lib/qt) ++ install(DIRECTORY /opt/Qt5.15.19/plugins DESTINATION lib/qt) + install(DIRECTORY /usr/share/fonts DESTINATION lib/qt) + endif() if(HAVE_QT_OPENGL) diff --git a/pyproject.toml b/pyproject.toml index 58fba2131..ff65d7763 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,6 +3,7 @@ requires = [ "numpy<2.0; python_version<'3.9'", "numpy==2.0.2; python_version>='3.9' and python_version<'3.13'", "numpy==2.1.3; python_version=='3.13'", + "numpy==2.3.2; python_version=='3.14'", "packaging", "pip", "scikit-build>=0.14.0", diff --git a/setup.py b/setup.py index 42c1cb4c0..4e21c5d1b 100755 --- a/setup.py +++ b/setup.py @@ -31,11 +31,9 @@ def main(): cuda_arch_bin = os.environ.get("CUDA_ARCH_BIN", "7.5;8.0;8.6;8.9;9.0") cuda_arch_ptx = os.environ.get("CUDA_ARCH_PTX", "9.0") - # NOTE: since 2.3.0 numpy upgraded from manylinux2014 to manylinux_2_28 - # see https://numpy.org/doc/stable/release/2.3.0-notes.html#numpy-2-3-0-release-notes install_requires = [ 'numpy<2.0; python_version<"3.9"', - 'numpy(>=2, <2.3.0); python_version>="3.9"', + 'numpy>=2; python_version>="3.9"', ] python_version = cmaker.CMaker.get_python_version() @@ -86,7 +84,7 @@ def main(): # https://stackoverflow.com/questions/1405913/python-32bit-or-64bit-mode is64 = sys.maxsize > 2 ** 32 - package_name = "opencv-python-cuda" + package_name = "opencv_python_cuda" long_description = io.open("README.md", encoding="utf-8").read() @@ -249,6 +247,10 @@ def main(): # see: https://github.com/opencv/opencv-python/issues/771 cmake_args.append("-DWITH_MSMF=OFF") cmake_args.append("-DWITH_OBSENSOR=OFF") # Orbbec cameras backend uses MSMF API + # see: https://github.com/opencv/opencv/issues/28438 + # libavdevice is enabled by default, but brings libxcb dependency + if sys.platform.startswith("linux"): + cmake_args.append("-DOPENCV_FFMPEG_ENABLE_LIBAVDEVICE=OFF") if sys.platform.startswith("linux") and not is64 and "bdist_wheel" in sys.argv: subprocess.check_call("patch -p0 < patches/patchOpenEXR", shell=True) @@ -330,6 +332,7 @@ def main(): "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Programming Language :: C++", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering",