OpenCV 4.9.0 with CUDA Build - Python: "No Module Named 'cv2'"

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
1 Like