Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
fc127ae
Update README.md
AS1100K Apr 20, 2025
416ec8b
OpenCV submodules update.
asmorkalov Jun 18, 2025
dc91b59
Merge pull request #1111 from asmorkalov/as/opencv_update
asmorkalov Jun 20, 2025
d2b8df1
Merge pull request #1095 from as1100k-forks/fix-missing-python-suppor…
asmorkalov Jun 22, 2025
fa50138
BLAS search fix on Linux after chanages in main OpenCV.
asmorkalov Jun 30, 2025
ef4ca3f
Merge pull request #1113 from asmorkalov:as/linux_blas_fix
asmorkalov Jul 1, 2025
b5f684c
Updated OpenCV to release 4.12.0.
asmorkalov Jul 3, 2025
957adcf
Updated Windows build environment to 2025. 2019 - retired.
asmorkalov Jul 3, 2025
8d6746c
Merge pull request #1115 from asmorkalov:as/opencv_4.12.0
asmorkalov Jul 3, 2025
9cd2513
Merge pull request #1117 from asmorkalov:as/windows_env_update
asmorkalov Jul 4, 2025
7a9ed05
Updated numpy dependencies.
asmorkalov Jul 4, 2025
fa742a4
Merge pull request #1119 from asmorkalov:as/numpy_dependency
asmorkalov Jul 4, 2025
609ff9b
Disabled Orbbec backend on Windows in headless configuration as it us…
asmorkalov Jul 8, 2025
e42c4e9
Merge pull request #1123 from asmorkalov:as/no_msmf_win_headless
asmorkalov Jul 8, 2025
dd81860
Update build_wheels_linux.yml
avdivan Jul 10, 2025
a88d65f
Merge pull request #1127 from avdivan:4.x
asmorkalov Jul 16, 2025
031af3c
Update build_wheels_linux.yml
avdivan Jul 28, 2025
4924e6b
Merge pull request #1131 from avdivan:4.x
asmorkalov Jul 30, 2025
18249e5
New manylinux_2_28 based invironment (#1148)
asmorkalov Dec 8, 2025
0795a08
manylinux_2_28 pipelines
avdivan Dec 10, 2025
55f1129
Update OpenCV to current 4.x branch. (#1161)
asmorkalov Dec 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 51 additions & 30 deletions .github/workflows/build_wheels_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ name: Linux x86_64
on:
pull_request:
branches:
- master
- 3.4
- 4.x
- 5.x
paths-ignore:
Expand All @@ -20,34 +18,50 @@ on:

jobs:
Build:
runs-on: ubuntu-22.04
runs-on: ${{ matrix.platform == 'aarch64' && 'opencv-cn-lin-arm64' || 'ubuntu-22.04' }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
python-version: ['3.9']
platform: [x64]
with_contrib: [0, 1]
without_gui: [0, 1]
matrix:
python-version: ['3.9']
platform: [x86_64, aarch64]
manylinux: [2014, 2_28]
with_contrib: [0, 1]
without_gui: [0, 1]
build_sdist: [0]
include:
- platform: aarch64
manylinux: 2014
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-aarch64:20250630
- platform: x86_64
manylinux: 2014
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20250630
- platform: x86_64
manylinux: 2_28
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux_2_28-x86-64:20251013
- platform: aarch64
manylinux: 2_28
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux_2_28-aarch64:20251013

env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
REPO_DIR: .
PROJECT_SPEC: opencv-python
MB_PYTHON_VERSION: ${{ matrix.python-version }}
TRAVIS_PYTHON_VERSION: ${{ matrix.python-version }}
MB_ML_VER: 2014
MB_ML_VER: ${{ matrix.manylinux }}
TRAVIS_BUILD_DIR: ${{ github.workspace }}
CONFIG_PATH: travis_config.sh
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20250611
DOCKER_IMAGE: ${{ matrix.DOCKER_IMAGE }}
USE_CCACHE: 0
UNICODE_WIDTH: 32
PLAT: x86_64
PLAT: ${{ matrix.platform }}
SDIST: ${{ matrix.build_sdist || 0 }}
ENABLE_HEADLESS: ${{ matrix.without_gui }}
ENABLE_CONTRIB: ${{ matrix.with_contrib }}

steps:
- name: Cleanup
run: find . -mindepth 1 -delete
Expand All @@ -62,35 +76,42 @@ jobs:
with:
submodules: false
fetch-depth: 0

- name: Build a package
run: source scripts/build.sh
- name: Saving a wheel accordingly to matrix
uses: actions/upload-artifact@v4
with:
name: wheel-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }}
name: wheel-${{ matrix.platform }}-${{ matrix.manylinux }}-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }}
path: wheelhouse/opencv*.whl

Test:
needs: [Build]
runs-on: ubuntu-22.04
runs-on: ${{ matrix.platform == 'aarch64' && 'opencv-cn-lin-arm64' || 'ubuntu-22.04' }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
platform: [x64]
platform: [x86_64, aarch64]
manylinux: [2014, 2_28]
with_contrib: [0, 1]
without_gui: [0, 1]
build_sdist: [0]

env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
MB_PYTHON_VERSION: ${{ matrix.python-version }}
NP_TEST_DEP: numpy==1.19.4
NP_TEST_DEP_LATEST: numpy==2.2.1
NP_TEST_DEP_LATEST: numpy==2.2.6
CONFIG_PATH: travis_config.sh
PLAT: x86_64
PLAT: ${{ matrix.platform }}
SDIST: ${{ matrix.build_sdist || 0 }}
ENABLE_HEADLESS: ${{ matrix.without_gui }}
ENABLE_CONTRIB: ${{ matrix.with_contrib }}
DOCKER_TEST_IMAGE: ${{ matrix.platform == 'aarch64' && 'quay.io/opencv-ci/multibuild-focal_arm64v8:2025-11-13' || '' }}
steps:
- name: Cleanup
run: find . -mindepth 1 -delete
Expand All @@ -100,12 +121,13 @@ jobs:
with:
submodules: true
fetch-depth: 0

- name: Setup Environment variables
run: if [ "3.10" == "${{ matrix.python-version }}" -o "3.11" == "${{ matrix.python-version }}" -o "3.12" == "${{ matrix.python-version }}" -o "3.13" == "${{ matrix.python-version }}" ]; then echo "TEST_DEPENDS=$(echo $NP_TEST_DEP_LATEST)" >> $GITHUB_ENV; else echo "TEST_DEPENDS=$(echo $NP_TEST_DEP)" >> $GITHUB_ENV; fi
- name: Download a wheel accordingly to matrix
uses: actions/download-artifact@v4
with:
name: wheel-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }}
name: wheel-${{ matrix.platform }}-${{ matrix.manylinux }}-${{ matrix.with_contrib }}-${{ matrix.without_gui }}-${{ matrix.build_sdist }}
path: wheelhouse/
- name: Package installation and run tests
run: source scripts/install.sh
Expand Down Expand Up @@ -134,7 +156,7 @@ jobs:
NP_TEST_DEP: numpy==1.19.4
TRAVIS_BUILD_DIR: ${{ github.workspace }}
CONFIG_PATH: travis_config.sh
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20250611
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64:20250630
USE_CCACHE: 1
UNICODE_WIDTH: 32
SDIST: ${{ matrix.build_sdist || 0 }}
Expand Down Expand Up @@ -188,24 +210,24 @@ jobs:
steps:
- uses: actions/download-artifact@v4
with:
name: wheels
path: wheelhouse/

- name: Upload wheels for opencv_python_rolling
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_rolling-*
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_rolling-*
- name: Upload wheels for opencv_contrib_python_rolling
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_rolling-*
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_rolling-*
- name: Upload wheels for opencv_python_headless_rolling
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless_rolling-*
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_headless_rolling-*
- name: Upload wheels for opencv_contrib_python_headless_rolling
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless_rolling-*
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_headless_rolling-*

Pre-release:
if: github.event_name == 'release' && github.event.release.prerelease
Expand All @@ -218,12 +240,12 @@ jobs:
steps:
- uses: actions/download-artifact@v4
with:
name: wheels
path: wheelhouse/

- name: Upload all wheels
run: |
python -m pip install twine
python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/opencv_* wheelhouse/opencv-*
python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_* wheelhouse/wheel-*/opencv-*

Release:
if: github.event_name == 'release' && !github.event.release.prerelease
Expand All @@ -236,21 +258,20 @@ jobs:
steps:
- uses: actions/download-artifact@v4
with:
name: wheels
path: wheelhouse/
- name: Upload wheels for opencv_python
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_python-* wheelhouse/opencv-python-[^h]*
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python-* wheelhouse/wheel-*/opencv-python-[^h]*
- name: Upload wheels for opencv_contrib_python
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python-* wheelhouse/opencv-contrib-python-[^h]*
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python-* wheelhouse/wheel-*/opencv-contrib-python-[^h]*
- name: Upload wheels for opencv_python_headless
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless-* wheelhouse/opencv-python-headless-*
python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_headless-* wheelhouse/wheel-*/opencv-python-headless-*
- name: Upload wheels for opencv_contrib_python_headless
run: |
python -m pip install twine
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless-* wheelhouse/opencv-contrib-python-headless-*
python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_headless-* wheelhouse/wheel-*/opencv-contrib-python-headless-*
8 changes: 3 additions & 5 deletions .github/workflows/build_wheels_linux_arm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ name: Linux ARM64
on:
pull_request:
branches:
- master
- 3.4
- 4.x
- 5.x
paths-ignore:
Expand Down Expand Up @@ -42,7 +40,7 @@ jobs:
MB_ML_VER: 2014
TRAVIS_BUILD_DIR: ${{ github.workspace }}
CONFIG_PATH: travis_config.sh
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-aarch64:20250611
DOCKER_IMAGE: quay.io/opencv-ci/opencv-python-manylinux2014-aarch64:20250630
USE_CCACHE: 0
UNICODE_WIDTH: 32
SDIST: ${{ matrix.build_sdist || 0 }}
Expand Down Expand Up @@ -89,9 +87,9 @@ jobs:
MB_PYTHON_VERSION: ${{ matrix.python-version }}
PLAT: aarch64
NP_TEST_DEP: numpy==1.19.4
NP_TEST_DEP_LATEST: numpy==2.2.1
NP_TEST_DEP_LATEST: numpy==2.2.6
CONFIG_PATH: travis_config.sh
DOCKER_TEST_IMAGE: multibuild/focal_arm64v8
DOCKER_TEST_IMAGE: quay.io/opencv-ci/multibuild-focal_arm64v8:2025-11-13
UNICODE_WIDTH: 32
steps:
- name: Cleanup
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/build_wheels_macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ name: macOS x86_64
on:
pull_request:
branches:
- master
- 3.4
- 4.x
- 5.x
paths-ignore:
Expand Down Expand Up @@ -109,7 +107,7 @@ jobs:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
MB_PYTHON_VERSION: ${{ matrix.python-version }}
NP_TEST_DEP: numpy==1.19.4
NP_TEST_DEP_LATEST: numpy==2.2.1
NP_TEST_DEP_LATEST: numpy==2.2.6
CONFIG_PATH: travis_config.sh
PLAT: x86_64
OPENCV_TEST_DATA_PATH: ${{ github.workspace }}/opencv_extra/testdata
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/build_wheels_macos_m1.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ name: macOS ARM64
on:
pull_request:
branches:
- master
- 3.4
- 4.x
- 5.x
paths-ignore:
Expand Down
11 changes: 5 additions & 6 deletions .github/workflows/build_wheels_windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ name: Windows x86_64
on:
pull_request:
branches:
- master
- 3.4
- 4.x
- 5.x
paths-ignore:
Expand All @@ -19,7 +17,7 @@ on:

jobs:
Build:
runs-on: windows-2019
runs-on: windows-2025
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -48,7 +46,7 @@ jobs:
echo "ENABLE_ROLLING=1" >> $GITHUB_ENV
fi
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: false
fetch-depth: 0
Expand Down Expand Up @@ -79,7 +77,7 @@ jobs:

Test:
needs: [Build]
runs-on: windows-2019
runs-on: windows-2025
defaults:
run:
shell: cmd
Expand All @@ -95,6 +93,7 @@ jobs:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
OPENCV_TEST_DATA_PATH: ${{ github.workspace }}\opencv_extra\testdata
PYLINT_TEST_FILE: ${{ github.workspace }}\opencv\samples\python\squares.py
PlatformToolset: v143
steps:
- name: Cleanup
shell: bash
Expand All @@ -103,7 +102,7 @@ jobs:
rm -rf ./.??* || true
working-directory: ${{ github.workspace }}
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ Python 3.x compatible pre-built wheels are provided for the officially supported
- 3.10
- 3.11
- 3.12
- 3.13

### Backward compatibility

Expand Down
4 changes: 2 additions & 2 deletions docker/manylinux2014/Dockerfile_aarch64
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Version: 20250611
# Version: 20250630
# Image name: quay.io/opencv-ci/opencv-python-manylinux2014-aarch64

FROM quay.io/pypa/manylinux2014_aarch64:latest
Expand All @@ -21,7 +21,7 @@ ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH
RUN yum install zlib-devel curl-devel xcb-util-renderutil-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-wm-devel mesa-libGL-devel libxkbcommon-devel libxkbcommon-x11-devel libXi-devel lapack-devel epel-release -y && \
yum install openblas-devel dejavu-sans-fonts -y && \
cp /usr/include/lapacke/lapacke*.h /usr/include/ && \
curl https://raw.githubusercontent.com/xianyi/OpenBLAS/v0.3.3/cblas.h -o /usr/include/cblas.h && \
cp /usr/include/openblas/*.h /usr/include/ && \
# libpng will be built from source
yum remove libpng -y

Expand Down
4 changes: 2 additions & 2 deletions docker/manylinux2014/Dockerfile_x86_64
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Version: 20250611
# Version: 20250630
# Image name: quay.io/opencv-ci/opencv-python-manylinux2014-x86-64

FROM quay.io/pypa/manylinux2014_x86_64:latest
Expand All @@ -20,8 +20,8 @@ ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH
# epel-release need for aarch64 to get openblas packages
RUN yum install zlib-devel curl-devel xcb-util-renderutil-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-wm-devel mesa-libGL-devel libxkbcommon-devel libxkbcommon-x11-devel libXi-devel lapack-devel epel-release -y && \
yum install openblas-devel dejavu-sans-fonts -y && \
cp /usr/include/openblas/*.h /usr/include/ && \
cp /usr/include/lapacke/lapacke*.h /usr/include/ && \
curl https://raw.githubusercontent.com/xianyi/OpenBLAS/v0.3.3/cblas.h -o /usr/include/cblas.h && \
# libpng will be built from source
yum remove libpng -y

Expand Down
Loading