python - 在 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
解决方案
步骤 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))
推荐阅读
- mysql - 如何将 1D mysql 表“展平”或“折叠”成 2D?
- javascript - 在选择框中填充 optgroup 上的选项,选项数据相互覆盖
- ios - Objective-C 生成的接口头和 CocoaPods
- sql - 执行 SQL 任务中的存储过程不持久化对数据库的更改
- xcode - 无法将 Xcode 服务器从 Xcode 9.4.1 更新到 Xcode 10
- arrays - 如何从firestore检索数组的特定值
- java - 为什么以前的 Activity 在设置 Activity 工具栏上按向上按钮被破坏?
- python - Python布尔检查其他功能
- mysql - SQL从表中添加一个额外的列
- angular - 如何访问可观察列表中的对象