Skip to content

Use git submodules for OpenCV, vcpkg for Tesseract, and cmake initial cache files for build flags#1836

Merged
shimat merged 15 commits intomainfrom
renew_windows_environment_setup
Mar 8, 2026
Merged

Use git submodules for OpenCV, vcpkg for Tesseract, and cmake initial cache files for build flags#1836
shimat merged 15 commits intomainfrom
renew_windows_environment_setup

Conversation

@shimat
Copy link
Owner

@shimat shimat commented Mar 7, 2026

Summary by CodeRabbit

  • Chores
    • Switched to Git submodules for OpenCV components, added caching and unified build flows for faster CI on Linux/Windows, and introduced full/slim build options plus Windows build automation.
  • Documentation
    • Expanded and clarified Windows and Ubuntu setup/build instructions.
  • Packaging
    • Harmonized packaging/layout and runtime artifact handling across platforms.
  • Removed
    • Debugger visualizer UI and its test harness were removed.

@shimat shimat self-assigned this Mar 7, 2026
@shimat shimat marked this pull request as draft March 7, 2026 04:07
@coderabbitai
Copy link

coderabbitai bot commented Mar 7, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: dffb6624-0f9f-4e93-a8c0-9e98f49a65f7

📥 Commits

Reviewing files that changed from the base of the PR and between 16d14f1 and 22a04fe.

⛔ Files ignored due to path filters (2)
  • src/OpenCvSharp.DebuggerVisualizers/OpenCvSharp.dll is excluded by !**/*.dll
  • test/OpenCvSharp.DebuggerVisualizers.Tester/_data/image/calibration/00.jpg is excluded by !**/*.jpg
📒 Files selected for processing (29)
  • .github/workflows/windows.yml
  • .gitignore
  • .gitmodules
  • OpenCvSharp.sln
  • README.md
  • build_opencv_windows.ps1
  • cmake/opencv_build_options.cmake
  • cmake/triplets/x64-windows-static.cmake
  • nuget/OpenCvSharp4.runtime.win.csproj
  • nuget/OpenCvSharp4.runtime.win.slim.csproj
  • src/OpenCvSharp.DebuggerVisualizers/ImageViewer.cs
  • src/OpenCvSharp.DebuggerVisualizers/ImageViewer.designer.cs
  • src/OpenCvSharp.DebuggerVisualizers/ImageViewer.resx
  • src/OpenCvSharp.DebuggerVisualizers/MatDebuggerVisualizer.cs
  • src/OpenCvSharp.DebuggerVisualizers/MatObjectSource.cs
  • src/OpenCvSharp.DebuggerVisualizers/MatProxy.cs
  • src/OpenCvSharp.DebuggerVisualizers/OpenCvSharp.DebuggerVisualizers.csproj
  • src/OpenCvSharp.DebuggerVisualizers/Properties/AssemblyInfo.cs
  • src/OpenCvSharp.DebuggerVisualizers/packages.config
  • src/OpenCvSharp/Modules/core/Mat/Mat.cs
  • src/OpenCvSharpExtern/CMakeLists.txt
  • src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj
  • src/tools/OpenCvSharp.ReleaseMaker/Packer.cs
  • test/OpenCvSharp.DebuggerVisualizers.Tester/App.config
  • test/OpenCvSharp.DebuggerVisualizers.Tester/OpenCvSharp.DebuggerVisualizers.Tester.csproj
  • test/OpenCvSharp.DebuggerVisualizers.Tester/Program.cs
  • test/OpenCvSharp.DebuggerVisualizers.Tester/Properties/AssemblyInfo.cs
  • test/OpenCvSharp.Tests/system/WindowsLibraryLoaderTest.cs
  • vcpkg.json

📝 Walkthrough

Walkthrough

Switches OpenCV/Tesseract from prebuilt downloads to Git submodules and CMake-based source builds, adds CMake cache option files (full/slim), updates CI/workflow paths and caches, introduces Windows OpenCV build script and vcpkg integration, and removes the DebuggerVisualizers project and related files.

Changes

Cohort / File(s) Summary
Workflows
\.github/workflows/linux-arm.yml, \.github/workflows/ubuntu-slim.yml, \.github/workflows/ubuntu.yml, \.github/workflows/windows.yml
Enable git submodules in checkout; remove explicit OpenCV checkouts; adjust cache keys/paths to separate include/lib; add -C cmake/opencv_build_options*.cmake to OpenCV cmake invocations; harmonize workspace/src/build paths and packaging/test steps; Windows CI now builds OpenCV and integrates vcpkg/Tesseract with conditional caching.
Git metadata & ignore
\.gitmodules, \.gitignore, opencv, opencv_contrib
Add opencv and opencv_contrib submodules and pointer commits; add ignore rules for OpenCV/Tesseract build outputs and artifact dirs.
Windows build tooling
build_opencv_windows.ps1, download_opencv_windows.ps1, download_tesseract_windows.ps1, cmake/triplets/x64-windows-static.cmake, vcpkg.json
Add build_opencv_windows.ps1 to build OpenCV (detect VS, vcpkg, set prefixes, CMake configure/build/install); remove legacy download scripts; add vcpkg manifest and static triplet for Windows static builds.
OpenCV CMake options
cmake/opencv_build_options.cmake, cmake/opencv_build_options_slim.cmake
Add two forced CMake cache files: a full profile (selective modules, disables many extras) and a slim profile (minimal module set, no DNN/Protobuf/backends) used by CI and scripts.
Project CMake changes
src/CMakeLists.txt, src/OpenCvSharpExtern/CMakeLists.txt
Add NO_INSTALL_TO_TEST option; on Windows enable static linkage behaviors, vcpkg/Tesseract linking, and post-build copy of OpenCvSharpExtern and discovered OpenCV FFmpeg DLL into test dir (guarded by options).
Packaging / NuGet paths
nuget/OpenCvSharp4.runtime.win.csproj, nuget/OpenCvSharp4.runtime.win.slim.csproj, src/tools/OpenCvSharp.ReleaseMaker/Packer.cs
Update packaged DLL paths to new CMake build outputs (src/build / src/build_slim) and opencv_artifacts/bin; adjust ReleaseMaker to locate OpenCvSharpExtern per-arch build outputs and skip missing DLLs; remove debugger-visualizer from packaged binaries.
Native project conversion
src/OpenCvSharpExtern/OpenCvSharpExtern.vcxproj
Convert to x64 Makefile/NMake-style project entries, add numerous OpenCV source/header entries, and remove Win32 legacy configurations to align with Makefile-driven x64 builds.
Removed Debugger Visualizers
src/OpenCvSharp.DebuggerVisualizers/*, test/OpenCvSharp.DebuggerVisualizers.Tester/*, OpenCvSharp.sln (project removals referenced)
Remove the OpenCvSharp.DebuggerVisualizers project and all its sources, designer/resx, assembly info, packages.config, and the tester project/files; update solution to drop the visualizers and related solution mappings.
Docs / README
README.md
Expand Windows and Ubuntu build/setup instructions to include submodule clone, vcpkg, cmake build steps, and explicit commands for the new source-build workflow.
Minor source/tests
src/OpenCvSharp/Modules/core/Mat/Mat.cs, test/OpenCvSharp.Tests/system/WindowsLibraryLoaderTest.cs
Doc update to Mat constructor reference; conditional expectation in WindowsLibraryLoaderTest based on NET symbol.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main architectural changes: replacing direct downloads with git submodules for OpenCV, introducing vcpkg for Tesseract management, and centralizing build configuration via CMake cache files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch renew_windows_environment_setup

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
.github/workflows/ubuntu.yml (1)

59-67: ⚠️ Potential issue | 🟠 Major

Invalidate the OpenCV cache when the full build profile changes.

The cached install tree depends on cmake/opencv_build_options.cmake (used in the Build OpenCV step at line 72), but the cache key only varies by OPENCV_VERSION and distro. If this configuration file changes, the cache will still match exactly, causing the build step to be skipped and outdated artifacts to be reused.

🔑 Suggested key update
-          key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}
+          key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}-${{ hashFiles('.github/workflows/ubuntu.yml', 'cmake/opencv_build_options.cmake') }}

Apply this change to both the restore (line 67) and save (line 89) cache actions.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ubuntu.yml around lines 59 - 67, The OpenCV cache key must
include the build options file so changes to cmake/opencv_build_options.cmake
invalidate the cache; update the cache key used in both the "Restore OpenCV
cache" and the corresponding "Save OpenCV cache" steps to append a hash of that
file (e.g., include ${{ hashFiles('cmake/opencv_build_options.cmake') }})
alongside OPENCV_VERSION and matrix.ubuntu so the cache is recomputed when the
full build profile changes.
.github/workflows/linux-arm.yml (1)

51-58: ⚠️ Potential issue | 🟠 Major

Use the same full key for restore and save, including the new cmake options file.

The restore and save cache keys don't match: the restore key at line 58 includes ${{ hashFiles('.github/workflows/linux-arm.yml') }}, but the save key at line 82 is missing this suffix entirely. This means steps.opencv-cache.outputs.cache-hit will never be 'true', and OpenCV will always be rebuilt. Additionally, cmake/opencv_build_options.cmake is now used in the build at line 66 but not included in the cache key, so changes to the build options won't invalidate the cache.

🔑 Suggested key updates
Line 58 (restore):
-          key: opencv-arm-${{ env.OPENCV_VERSION }}-${{ hashFiles('.github/workflows/linux-arm.yml') }}
+          key: opencv-arm-${{ env.OPENCV_VERSION }}-${{ hashFiles('.github/workflows/linux-arm.yml', 'cmake/opencv_build_options.cmake') }}

Line 82 (save):
-          key: opencv-arm-${{ env.OPENCV_VERSION }}
+          key: opencv-arm-${{ env.OPENCV_VERSION }}-${{ hashFiles('.github/workflows/linux-arm.yml', 'cmake/opencv_build_options.cmake') }}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/linux-arm.yml around lines 51 - 58, The restore and save
cache keys must match and include the cmake options file so cache hits work and
option changes invalidate the cache: update the key used in the "Restore OpenCV
cache" step (id: opencv-cache) to be identical to the key used in the save step
(save job for OpenCV cache) and append
hashFiles('cmake/opencv_build_options.cmake') (or include that file path in the
same hashFiles call) so both restore and save use the full key including the
workflow file and the cmake/opencv_build_options.cmake hash.
.github/workflows/ubuntu-slim.yml (1)

48-56: ⚠️ Potential issue | 🟠 Major

Invalidate the slim OpenCV cache when the slim profile changes.

The cache key at lines 48–56 and 107–114 does not include cmake/opencv_build_options_slim.cmake, so the cache won't invalidate when the slim module list or feature toggles change. Add the configuration file to the cache key:

🔑 Suggested key update
-          key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}-slim
+          key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}-slim-${{ hashFiles('.github/workflows/ubuntu-slim.yml', 'cmake/opencv_build_options_slim.cmake') }}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ubuntu-slim.yml around lines 48 - 56, The cache key for
the slim OpenCV cache (the step named "Restore OpenCV cache (slim)" with id
opencv-cache and the corresponding save step) doesn't include the slim build
configuration, so changes to cmake/opencv_build_options_slim.cmake won't
invalidate the cache; update both the restore and save cache key expressions
(the opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}-slim keys) to
incorporate the cmake/opencv_build_options_slim.cmake file (e.g., include its
checksum or path expansion in the key) so the cache is regenerated when that
config changes.
🧹 Nitpick comments (4)
.gitmodules (3)

4-6: Consider adding branch tracking for easier upstream updates.

While the submodule configuration is syntactically correct, specifying a branch field would make it easier to track and update to the latest upstream changes.

📌 Suggested enhancement
 [submodule "opencv"]
 	path = opencv
 	url = https://github.com/opencv/opencv.git
+	branch = 4.x

Choose the appropriate branch (e.g., 4.x, 5.x, or master) based on your OpenCV version requirements.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitmodules around lines 4 - 6, Add an explicit branch entry to the opencv
submodule configuration so updates track the upstream branch; modify the
[submodule "opencv"] section (the entry with path = opencv and url =
https://github.com/opencv/opencv.git) to include a branch = <branch-name> (e.g.,
branch = 4.x or branch = master) that matches the project’s OpenCV
compatibility, then run git submodule sync and git submodule update --remote to
start tracking that branch.

7-9: Consider adding branch tracking for easier upstream updates.

Similar to the opencv submodule, specifying a branch field would simplify tracking and updating the opencv_contrib submodule. Ensure the branch matches the one used for the opencv submodule to maintain compatibility.

📌 Suggested enhancement
 [submodule "opencv_contrib"]
 	path = opencv_contrib
 	url = https://github.com/opencv/opencv_contrib.git
+	branch = 4.x
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitmodules around lines 7 - 9, Add a branch tracking entry for the
opencv_contrib submodule in .gitmodules so it follows the same branch as the
opencv submodule; update the opencv_contrib submodule block (submodule
"opencv_contrib") to include a branch = <branch-name> line matching the opencv
submodule's branch to simplify upstream updates and keep compatibility.

4-9: Operational advice: Consider shallow clones for large OpenCV repositories.

The opencv and opencv_contrib repositories are quite large (several hundred MB to GBs). To improve clone performance and reduce disk usage, consider using shallow clones in your CI/CD workflows:

git submodule update --init --depth 1 opencv opencv_contrib

Additionally, ensure that contributor documentation includes clear instructions on initializing submodules after cloning the repository.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitmodules around lines 4 - 9, The .gitmodules lists large submodules
"opencv" and "opencv_contrib" which slow clones; update CI and contributor docs
to perform shallow submodule clones for these entries by changing the CI
pipeline step that initializes submodules to use depth 1 (e.g. run git submodule
update --init --depth 1 opencv opencv_contrib) and add a short note to
CONTRIBUTING.md (or README) describing how contributors should initialize these
submodules after cloning; reference the .gitmodules entries "opencv" and
"opencv_contrib" when making the changes so the CI job and docs target the
correct submodules.
.gitignore (1)

122-125: Ignore the new src/build* trees too.

This PR now generates src/build and src/build-slim, so those artifacts will start showing up as untracked files in local dev flows.

♻️ Suggested ignore entries
 # Local OpenCV / Tesseract build outputs (generated by build_opencv_windows.ps1)
 /opencv/build/
 /opencv_artifacts/
 /tesseract_artifacts/
+/src/build/
+/src/build-slim/
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.gitignore around lines 122 - 125, Add ignore patterns for the newly
generated build trees so local untracked files don't appear: update the
.gitignore to include "src/build/" and "src/build-slim/" (and optionally
"src/build-*" to catch variations). Ensure these exact directory patterns match
the generated folders referenced in the diff (src/build, src/build-slim) and are
placed in the appropriate section of .gitignore so they take effect for local
dev flows.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/windows.yml:
- Around line 50-58: Update the OpenCV cache key so it invalidates when build
inputs change: modify the cache steps (e.g., the "Restore OpenCV cache" step
with id opencv-cache and the matching save cache step) to include a fingerprint
of relevant inputs such as cmake/opencv_build_options.cmake and the OpenCV
source (or a file-list/hash of sources) in addition to OPENCV_VERSION; generate
a stable hash of those files (or use actions/checkout@v3 commit SHA) and append
it to the existing key (e.g., opencv-${{ env.OPENCV_VERSION }}-windows-x64-${{
hashFiles('cmake/opencv_build_options.cmake','path/to/opencv/**') }} ) so any
change to build options or the OpenCV sources will miss the cache and trigger a
rebuild.
- Line 12: The workflow uses a mutable TESSERACT_VCPKG_CACHE_KEY and runs `vcpkg
install tesseract:x64-windows-static` without any manifest or baseline pinning,
which allows non-reproducible Tesseract/Leptonica binaries; fix by adding a
vcpkg manifest (vcpkg.json) with a builtin-baseline entry or by adding a vcpkg
bootstrap step that checks out and uses a specific vcpkg commit hash before
`vcpkg install`, and update references to TESSERACT_VCPKG_CACHE_KEY so cache
invalidation corresponds to the pinned baseline/commit.

In `@build_opencv_windows.ps1`:
- Around line 84-85: The build directory $buildDir is reused across different
Visual Studio generators causing stale CMakeCache.txt collisions; change the
script to make the build tree generator-specific (e.g., derive $buildDir using
the detected generator or $vsMajor like "$RepoRoot/opencv/build-vs$vsMajor") or,
alternatively, ensure the script removes/cleans the existing CMake cache and
build files before running configure; update any references to $buildDir and
keep $installDir untouched.

In `@cmake/opencv_build_options.cmake`:
- Around line 19-20: The wrapper build is trying to compile barcode.cpp (which
depends on cv::barcode::BarcodeDetector) while the full OpenCV build disables
BUILD_opencv_barcode in cmake/opencv_build_options.cmake; to fix, update the
CI/workflow CMake invocations that build OpenCvSharpExtern to pass -D
NO_BARCODE=ON so src/CMakeLists.txt will skip barcode.cpp, or alternatively
re-enable BUILD_opencv_barcode in cmake/opencv_build_options.cmake; modify the
workflows that call cmake (or the opencv_build_options.cmake file) so both the
full OpenCV build and the wrapper agree on barcode support.

In `@src/OpenCvSharpExtern/CMakeLists.txt`:
- Around line 64-65: The Windows test project is missing the FFmpeg plugin DLL;
either add a CopyToOutputDirectory entry for "opencv_videoio_ffmpeg4130_64.dll"
into OpenCvSharp.Tests.Windows.csproj or modify the CMakeLists.txt post-build
copy logic (the block that sets TEST_OUTPUT_DIR and copies native artifacts) to
also copy that DLL into the OpenCvSharp.Tests.Windows output folder; update the
post-build copy targets to include the extra destination (or add the DLL include
to the OpenCvSharp.Tests.Windows.csproj) so the opencv_videoio_ffmpeg4130_64.dll
is present for Windows test runs.

---

Outside diff comments:
In @.github/workflows/linux-arm.yml:
- Around line 51-58: The restore and save cache keys must match and include the
cmake options file so cache hits work and option changes invalidate the cache:
update the key used in the "Restore OpenCV cache" step (id: opencv-cache) to be
identical to the key used in the save step (save job for OpenCV cache) and
append hashFiles('cmake/opencv_build_options.cmake') (or include that file path
in the same hashFiles call) so both restore and save use the full key including
the workflow file and the cmake/opencv_build_options.cmake hash.

In @.github/workflows/ubuntu-slim.yml:
- Around line 48-56: The cache key for the slim OpenCV cache (the step named
"Restore OpenCV cache (slim)" with id opencv-cache and the corresponding save
step) doesn't include the slim build configuration, so changes to
cmake/opencv_build_options_slim.cmake won't invalidate the cache; update both
the restore and save cache key expressions (the opencv-${{ env.OPENCV_VERSION
}}-ubuntu-${{ matrix.ubuntu }}-slim keys) to incorporate the
cmake/opencv_build_options_slim.cmake file (e.g., include its checksum or path
expansion in the key) so the cache is regenerated when that config changes.

In @.github/workflows/ubuntu.yml:
- Around line 59-67: The OpenCV cache key must include the build options file so
changes to cmake/opencv_build_options.cmake invalidate the cache; update the
cache key used in both the "Restore OpenCV cache" and the corresponding "Save
OpenCV cache" steps to append a hash of that file (e.g., include ${{
hashFiles('cmake/opencv_build_options.cmake') }}) alongside OPENCV_VERSION and
matrix.ubuntu so the cache is recomputed when the full build profile changes.

---

Nitpick comments:
In @.gitignore:
- Around line 122-125: Add ignore patterns for the newly generated build trees
so local untracked files don't appear: update the .gitignore to include
"src/build/" and "src/build-slim/" (and optionally "src/build-*" to catch
variations). Ensure these exact directory patterns match the generated folders
referenced in the diff (src/build, src/build-slim) and are placed in the
appropriate section of .gitignore so they take effect for local dev flows.

In @.gitmodules:
- Around line 4-6: Add an explicit branch entry to the opencv submodule
configuration so updates track the upstream branch; modify the [submodule
"opencv"] section (the entry with path = opencv and url =
https://github.com/opencv/opencv.git) to include a branch = <branch-name> (e.g.,
branch = 4.x or branch = master) that matches the project’s OpenCV
compatibility, then run git submodule sync and git submodule update --remote to
start tracking that branch.
- Around line 7-9: Add a branch tracking entry for the opencv_contrib submodule
in .gitmodules so it follows the same branch as the opencv submodule; update the
opencv_contrib submodule block (submodule "opencv_contrib") to include a branch
= <branch-name> line matching the opencv submodule's branch to simplify upstream
updates and keep compatibility.
- Around line 4-9: The .gitmodules lists large submodules "opencv" and
"opencv_contrib" which slow clones; update CI and contributor docs to perform
shallow submodule clones for these entries by changing the CI pipeline step that
initializes submodules to use depth 1 (e.g. run git submodule update --init
--depth 1 opencv opencv_contrib) and add a short note to CONTRIBUTING.md (or
README) describing how contributors should initialize these submodules after
cloning; reference the .gitmodules entries "opencv" and "opencv_contrib" when
making the changes so the CI job and docs target the correct submodules.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 63e851cb-de5b-41ba-8d5a-83f369033b88

📥 Commits

Reviewing files that changed from the base of the PR and between 4f66185 and 16d14f1.

📒 Files selected for processing (17)
  • .github/workflows/linux-arm.yml
  • .github/workflows/ubuntu-slim.yml
  • .github/workflows/ubuntu.yml
  • .github/workflows/windows.yml
  • .gitignore
  • .gitmodules
  • build_opencv_windows.ps1
  • cmake/opencv_build_options.cmake
  • cmake/opencv_build_options_slim.cmake
  • download_opencv_windows.ps1
  • download_tesseract_windows.ps1
  • nuget/OpenCvSharp4.runtime.win.csproj
  • nuget/OpenCvSharp4.runtime.win.slim.csproj
  • opencv
  • opencv_contrib
  • src/CMakeLists.txt
  • src/OpenCvSharpExtern/CMakeLists.txt
💤 Files with no reviewable changes (2)
  • download_tesseract_windows.ps1
  • download_opencv_windows.ps1

@shimat shimat marked this pull request as ready for review March 8, 2026 06:29
@shimat shimat merged commit b3da9cb into main Mar 8, 2026
9 checks passed
@shimat shimat deleted the renew_windows_environment_setup branch March 8, 2026 06:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant