Final update… I got it to build and I’m able to use OpenCV in my Python project.
The last error message of: \Code\Python\opencv-test\venv\Scripts\python37.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x300
was because my build script was pointing to Python37.dll
but should have been Python37.lib
.
I copied Python37.lib
into my venv/Lib folder and voila!
Here’s the build script I used if anyone’s interested:
@echo off
setlocal
:: Clean build folder
if exist "C:\OpenCV_4.9.0\build" rmdir /s /q "C:\OpenCV_4.9.0\build"
mkdir "C:\OpenCV_4.9.0\build"
:: Initialize VS2022 environment
call "C:/Program Files/Microsoft Visual Studio/2022/Professional/VC/Auxiliary/Build/vcvars64.bat"
:: Set paths
set "openCvSource=C:/OpenCV_4.9.0/opencv"
set "openCVExtraModules=C:/OpenCV_4.9.0/opencv_contrib/modules"
set "openCvBuild=C:/OpenCV_4.9.0/build"
set "buildType=Release"
set "generator=Ninja"
set "venvPath=C:/Code/Python/opencv-test/venv"
:: Configure
"C:/Program Files/CMake/bin/cmake.exe" ^
-H"%openCvSource%" ^
-DOPENCV_EXTRA_MODULES_PATH="%openCVExtraModules%" ^
-B"%openCvBuild%" ^
-G%generator% ^
-DCMAKE_BUILD_TYPE=%buildType% ^
-DBUILD_EXAMPLES=OFF ^
-DBUILD_opencv_world=OFF ^
-DWITH_CUDA=ON ^
-DBUILD_opencv_python3=ON ^
-DPYTHON3_INCLUDE_DIR=%venvPath%/Include ^
-DPYTHON3_LIBRARY=%venvPath%/Lib/python37.lib ^
-DPYTHON3_EXECUTABLE=%venvPath%/Scripts/python.exe ^
-DPYTHON3_NUMPY_INCLUDE_DIRS=%venvPath%/Lib/site-packages/numpy/core/include ^
-DPYTHON3_PACKAGES_PATH=%venvPath%/Lib/site-packages ^
-DBUILD_TESTS=OFF ^
-DBUILD_PERF_TESTS=OFF ^
-DBUILD_opencv_apps=OFF ^
-DWITH_OPENGL=ON ^
-DOPENCV_DNN_CUDA=ON ^
-DOPENCV_ENABLE_NONFREE=ON ^
-DBUILD_opencv_python2=OFF ^
-DCUDA_ARCH_BIN=9.0 ^
-DCUDA_ARCH_PTX=
:: Run cmake
"C:/Program Files/CMake/bin/cmake.exe" --build "%openCvBuild%" --target install
endlocal