首页 > 解决方案 > 在 cmake 构建后,在 Python 的 site-package 文件夹中找不到 cv2

问题描述

我正在尝试在 Python 3.9.6 上使用 CUDA 函数构建 opencv
我在没有 Python3_LIBRARY_DEBUG 的情况下设置了与 Python3 相关的路径,并使用 cmake 检查它们是否正确。
opencv(具有 CUDA 功能)的构建工作没有错误。

cmake --build "fullpath to build folder" --target INSTALL --config Release

但是在cmake构建之后在Python的site-package文件夹中找不到“cv2”文件夹,并且在构建文件夹中找不到“install”文件夹(在cmake的“构建二进制文件的位置”设置)

【更新】cmake设置

PYTHON3_EXECUTABLE C:/Users/user/AppData/Local/Programs/Python/Python39/python.exe
PYTHON3_INCLUDE_DIR C:/Users/user/AppData/Local/Programs/Python/Python39/include
PYTHON3_LIBRARY C:/Users/user/AppData/Local/Programs/Python/Python39/libs/python39.lib
PYTHON3_NUMPY_INCLUDE_DIRS C:/Users/user/AppData/Local/Programs/Python/Python39/lib/site-packages/numpy/core/include
PYTHON3_PACKAGES_PATH C:/Users/user/AppData/Local/Programs/Python/Python39/Lib/site-packages
CMAKE_PREFIX_INSTALL C:/Users/user/Desktop/build_4.5.0-2/install

【更新】cmake构建后构建文件夹

├3rdparty/
├apps/
├bin/
├CmakeFiles/
├configured/
├data/
├doc/
├downloads/
├include/
├lib/
├modules/
├opencv2/
├python_loader/
├testdata/
├test-reports/
├tmp/
├win-install/

・操作系统:Windows 10 Pro for Workstation
・Python:3.9.6
・Cmake(GUI):3.20.5,生成器:Visual Studio 16 2019
・opencv:4.5.3,opencv_contrib:4.5.3

标签: pythonc++windowsopencvcmake

解决方案


步骤 0:先决条件

  • 下载并安装 CUDA 和 cuDNN。
  • 下载并安装 CmakeGUI。
  • 下载并安装 Visual Studio 社区版。使用适用于 C++ 的桌面开发选项安装。
  • 下载 OpenCV 源代码。
  • 下载 OpenCV 贡献。确保版本与 OpenCV 匹配。
  • 提取 OpenCV 和 OpenCV contrib zip 文件。
  • 创建一个名为 build 的空文件夹。

第 1 步:使用 CMake GUI 构建 OpenCV

  • 打开 CMake GUI 并浏览 OpenCV 源文件夹。
  • 浏览 wGo 以构建文件夹并使用 Visual Studio 打开 OpenCV.sln 文件的 make 文件夹。e 在上面创建。
  • 单击配置并选择 X64 平台并单击完成。
  • 新选项将以红色出现在 CMake 中。勾选这些复选框:WITH_CUDA、OPENCV_DNN_CUDA、ENABLE_FAST_MATH
  • 在同一窗口中,转到 OPENCV_EXTRA_MODULES_PATH 并浏览 OpenCV contrib 目录并指向模块子文件夹。
  • 再次点击配置。您将看到红色的新选项。勾选 CUDA_FAST_MATH 复选框。从 CUDA_ARCH_BIN 属性中,删除您的 nVidia GPU 型号不支持的任何计算架构。您可以找到适用于您的 GPU 型号的兼容计算架构列表。
  • 点击配置然后生成。

第 2 步:使用 Visual Studio 制作 OpenCV

  • 转到 build 文件夹并使用 Visual Studio 打开 OpenCV.sln 文件。
  • 打开后,从顶部将 Debug 更改为 Release。
  • 在右侧面板上,展开 Cmake Targets。
  • 右键单击 ALL_BUILD 并单击构建。
  • 完成后,右键单击安装并单击构建。

验证 GPU 计算加速

这是一个小代码,它使用 NumPy 在 CPU 上执行简单的矩阵乘法,使用 OpenCV 在 GPU 上执行简单的矩阵乘法。

import numpy as np
import cv2 as cv

npTmp = np.random.random((1024, 1024)).astype(np.float32)

npMat1 = np.stack([npTmp,npTmp],axis=2)
npMat2 = npMat1

cuMat1 = cv.cuda_GpuMat()
cuMat2 = cv.cuda_GpuMat()
cuMat1.upload(npMat1)
cuMat2.upload(npMat2)

print(%timeit cv.cuda.gemm(cuMat1, cuMat2,1,None,0,None,1))
print(%timeit cv.gemm(npMat1,npMat2,1,None,0,None,1))

推荐阅读