当前位置: 首页 > news >正文

Cmake、VS2019、C++、openGLopenCV环境安装

CMakeVisual Studio 2019 环境下安装和配置 OpenGLOpenCV 以及 CUDA 可能会有些复杂,因为涉及的组件多且相互依赖。以下是一个详细的指南,帮助您逐步完成安装和配置。


1. 前提条件

在开始之前,请确保您已安装以下软件:

  • Visual Studio 2019: 安装时请选择“使用 C++ 的桌面开发”工作负载。如果您计划进行更广泛的图形编程,也可以考虑包含“使用 C++ 的游戏开发”工作负载,因为它包含了一些 OpenGL 相关组件。
  • C++ 编译器: Visual Studio 2019 自带 MSVC,我们将使用它。

2. 安装 OpenGL

OpenGL 本身是一个规范,而不是一个传统意义上的库。您通常会使用 GLAD(OpenGL 加载器)来管理函数指针,并使用 GLFW(图形库框架)来处理窗口和输入。
在这里插入图片描述

a. GLFW 安装

  1. 下载 GLFW: 访问 GLFW 官网,下载适用于 Visual Studio 2019 的预编译二进制文件(例如:“64-bit Windows binaries”)。
  2. 解压: 将下载的 ZIP 文件解压到一个方便的位置,例如 C:\Libraries\glfw-3.3.8
  3. 结构: 解压后的文件夹中会包含 include(用于头文件)和 lib(用于库文件)。
    在这里插入图片描述

b. GLAD 安装

在这里插入图片描述

  1. 访问 GLAD 官网: 前往 GLAD 官网。
  2. 选择选项:
    • 语言: C/C++
    • 规范: OpenGL
    • API: 选择一个版本(例如 4.6)。请务必选择“Core”配置文件。
    • 扩展: 基本设置无需选择任何特定扩展。
    • 加载器: 勾选“Generate a loader”。
  3. 生成: 点击“Generate”并下载 ZIP 文件。
  4. 解压: 解压 ZIP 文件的内容。您会发现一个 include 文件夹,其中包含 KHRgladGLFW 相关的头文件。
  5. 复制头文件: 将解压后的 include 目录中的 gladKHR 文件夹复制到您的项目 include 目录中,或者一个公共的 include 目录(例如 C:\Libraries\glad\include)。

3. 安装 CUDA Toolkit

CUDA 对于利用 NVIDIA GPU 进行加速计算至关重要。

  1. 检查 GPU 兼容性: 确保您的 NVIDIA GPU 支持 CUDA。您可以在 NVIDIA CUDA GPU 页面 上查看。
  2. 下载 CUDA Toolkit: 访问 NVIDIA CUDA Toolkit 下载页面。
    • 选择您的操作系统(Windows)、架构(x86_64)和 Visual Studio 版本(VS2019 对应 10.0)。
    • 选择“local”安装程序进行完整下载。
  3. 运行安装程序: 执行下载的安装程序。
    • 在安装过程中,选择自定义安装。
    • 重要提示: 如果安装程序试图安装比您当前 Visual Studio 版本更旧的集成,请取消选择 Visual Studio 集成。您需要最新的集成,这应该随您的 VS2019 安装提供,或者由 Visual Studio 自身更新。通常,让 CUDA 安装程序处理核心 CUDA 组件和驱动程序更安全。
    • 按照屏幕上的提示完成安装。
  4. 验证安装:
    • 打开命令提示符,输入 nvcc -V。您应该会看到 CUDA 编译器版本信息。
    • 检查您的系统 PATH 环境变量。您应该能看到类似 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\libnvvp 的条目。

set(CUDA_DIR "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2")
在这里插入图片描述


4. 安装 OpenCV

OpenCV(开源计算机视觉库)可能会更复杂一些,尤其是与 CUDA 集成时。我们将使用 CMake 从源代码构建它。
在这里插入图片描述

a. 下载 OpenCV 源代码

  1. 下载 OpenCV: 访问 GitHub 上的 OpenCV 发布页面,下载最新稳定版本的源代码(例如 opencv-4.x.x.zip)。
  2. 下载 OpenCV Contrib: 如果您需要额外的模块(如 SIFT、SURF 等,这些模块因专利问题已移至 contrib),也请从 OpenCV Contrib 发布页面 下载相应的 opencv_contrib-4.x.x.zip
  3. 解压: 创建一个文件夹,例如 C:\Libraries\opencv。将 opencv-4.x.x.zip 解压到 C:\Libraries\opencv\opencv-4.x.x,并将 opencv_contrib-4.x.x.zip 解压到 C:\Libraries\opencv\opencv_contrib-4.x.x

b. 使用 CMake 和 Visual Studio 2019 构建 OpenCV

  1. 安装 CMake: 如果您尚未安装,请从 CMake 官网 下载并安装 CMake。选择 Windows 安装程序。

  2. 创建构建目录: 在您的 C:\Libraries\opencv\opencv-4.x.x 文件夹中,创建一个新的空文件夹,命名为 build。因此路径将是 C:\Libraries\opencv\opencv-4.x.x\build

  3. 打开 CMake-GUI: 启动 CMake 图形用户界面(CMake-GUI)。

    • 源代码路径: 浏览到 C:\Libraries\opencv\opencv-4.x.x
    • 构建二进制文件路径: 浏览到 C:\Libraries\opencv\opencv-4.x.x\build
  4. 配置:

    • 点击 Configure
    • 选择您的生成器:选择 Visual Studio 16 2019
    • 选择平台:选择 x64
    • 点击 Finish
  5. 设置 CMake 选项: 配置完成后,会出现一个选项列表。以下是 CUDA 和 contrib 的关键选项:

    • BUILD_opencv_world:(可选,但推荐)勾选此项以构建单个 opencv_world 库。
    • OPENCV_EXTRA_MODULES_PATH:勾选此项并提供您的 opencv_contrib 模块路径,例如 C:\Libraries\opencv\opencv_contrib-4.x.x\modules
    • WITH_CUDA勾选此选项。 CMake 应该会自动检测您的 CUDA 安装。如果未检测到,您可能需要手动将 CUDA_TOOLKIT_ROOT_DIR 设置为您的 CUDA 安装路径(例如 C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/vX.Y)。
    • CUDA_ARCH_BIN:这很重要。在 此处 查找您 GPU 的计算能力。例如,如果您的 GPU 计算能力为 7.5,则输入 7.5(或 75)。您可以输入用分号分隔的多个计算能力(例如 6.1;7.5;8.6)。
    • WITH_OPENGL勾选此选项。
    • INSTALL_C_EXAMPLES:(可选)勾选以构建 C 示例。
    • INSTALL_PYTHON_EXAMPLES:(可选)如果不需 Python 示例,则取消勾选。
    • BUILD_EXAMPLES:(可选)勾选以构建示例。
    • BUILD_SHARED_LIBS:保持勾选以构建 DLL(动态库)。如果您更喜欢静态链接,请取消勾选。
    • BUILD_TESTS:(可选)取消勾选以加快构建速度。
  6. 重新配置并生成:

    • 再次点击 Configure,确保所有选项都已正确设置。红色条目应该会消失。
    • 点击 Generate。这将在您的 build 目录中生成 Visual Studio 解决方案文件。
  7. 在 Visual Studio 中构建:

    • 在 Visual Studio 2019 中打开 C:\Libraries\opencv\opencv-4.x.x\build\OpenCV.sln
    • 在“解决方案资源管理器”中,右键单击 ALL_BUILD 项目,然后选择生成。这将编译所有 OpenCV 模块。这可能需要很长时间。
    • ALL_BUILD 完成后,右键单击 INSTALL 项目,然后选择生成。这会将编译好的库、头文件和 DLL 复制到 C:\Libraries\opencv\opencv-4.x.x\build\install 目录(或您在 CMake 配置期间指定为 CMAKE_INSTALL_PREFIX 的路径)。

5. 设置 Visual Studio 2019 项目

现在所有组件都已安装,让我们在 Visual Studio 中创建一个新项目并链接到这些库。

  1. 创建新项目:
    • 打开 Visual Studio 2019。
    • 点击“创建新项目”。
    • 选择“控制台应用”(适用于 C++)。
    • 为您的项目命名并选择位置。
  2. 配置项目属性:
    • 在“解决方案资源管理器”中,右键单击您的项目,然后选择属性
    • 确保将配置设置为 所有配置,平台设置为 x64

a. 包含目录(Include Directories)

  • 转到 VC++ 目录 > 包含目录
  • 添加以下路径:
    • C:\Libraries\glfw-3.3.8\include
    • C:\Libraries\glad\include(或您放置 GLAD 头文件的位置)
    • C:\Libraries\opencv\opencv-4.x.x\build\install\include
    • C:\Libraries\opencv\opencv-4.x.x\build\install\include\opencv2
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\include(将 vX.Y 替换为您的 CUDA 版本)

b. 库目录(Library Directories)

  • 转到 VC++ 目录 > 库目录
  • 添加以下路径:
    • C:\Libraries\glfw-3.3.8\lib-vc2019(或 GLFW 下载中与您 VS 版本对应的 lib-vcXXXX
    • C:\Libraries\opencv\opencv-4.x.x\build\install\x64\vc16\lib(或与您 VS 版本对应的 vcXX
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\lib\x64

c. 链接器 > 输入 > 附加依赖项(Linker > Input > Additional Dependencies)

  • 转到 链接器 > 输入 > 附加依赖项
  • 添加以下 .lib 文件:
    • glfw3.lib
    • opengl32.lib(标准 Windows OpenGL 库)
    • opencv_world4xx.lib(或调试版本 opencv_world4xxd.lib,将 4xx 替换为您的 OpenCV 版本,例如 opencv_world460.lib

d. 复制 DLL 文件(重要)

对于动态链接,您还需要确保相关的 DLL 文件在可执行文件旁边或系统 PATH 中。

  • OpenCV DLLs:C:\Libraries\opencv\opencv-4.x.x\build\install\x64\vc16\bin 目录下的所有 DLL 文件复制到您项目可执行文件(.exe)所在的目录(通常是 DebugRelease 文件夹)。
  • CUDA DLLs: 通常 CUDA DLLs 已经添加到系统 PATH 中,但如果没有,您可能需要将 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\bin 添加到系统 PATH,或者将其中的 DLLs 复制到项目可执行文件目录。
  • GLFW DLLs:C:\Libraries\glfw-3.3.8\lib-vc2019 目录下的 glfw3.dll 复制到您项目可执行文件所在的目录。

6. 示例代码(测试)

现在您可以编写一些简单的代码来测试您的安装了。

OpenGL 和 GLFW 示例

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;int main()
{glfwInit();glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);#ifdef __APPLE__glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endifGLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);if (window == NULL){std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}glfwMakeContextCurrent(window);glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){std::cout << "Failed to initialize GLAD" << std::endl;return -1;}while (!glfwWindowShouldClose(window)){processInput(window);glClearColor(0.2f, 0.3f, 0.3f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);glfwSwapBuffers(window);glfwPollEvents();}glfwTerminate();return 0;
}void processInput(GLFWwindow *window)
{if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)glfwSetWindowShouldClose(window, true);
}void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{glViewport(0, 0, width, height);
}

OpenCV 和 CUDA 示例

#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp> // For CUDA-accelerated image processing
#include <iostream>int main() {// Check if CUDA is availableif (cv::cuda::getCudaEnabledDeviceCount() > 0) {std::cout << "CUDA is available!" << std::endl;// Print device propertiescv::cuda::DeviceInfo info;std::cout << "GPU Device Name: " << info.name() << std::endl;std::cout << "Total Memory: " << info.totalGlobalMem() / (1024.0 * 1024.0) << " MB" << std::endl;// Example: Upload an image to GPU, convert to grayscale, download backcv::Mat hostImage = cv::imread("path/to/your/image.jpg", cv::IMREAD_COLOR); // Replace with a valid image pathif (hostImage.empty()) {std::cerr << "Error: Could not open or find the image!" << std::endl;return -1;}cv::cuda::GpuMat gpuImage;gpuImage.upload(hostImage); // Upload to GPUcv::cuda::GpuMat gpuGrayImage;cv::cuda::cvtColor(gpuImage, gpuGrayImage, cv::COLOR_BGR2GRAY); // Convert to grayscale on GPUcv::Mat hostGrayImage;gpuGrayImage.download(hostGrayImage); // Download back to CPUcv::imshow("Original Image", hostImage);cv::imshow("Grayscale Image (CUDA)", hostGrayImage);cv::waitKey(0);} else {std::cout << "CUDA is NOT available. Running CPU-only OpenCV." << std::endl;cv::Mat hostImage = cv::imread("path/to/your/image.jpg", cv::IMREAD_COLOR); // Replace with a valid image pathif (hostImage.empty()) {std::cerr << "Error: Could not open or find the image!" << std::endl;return -1;}cv::Mat hostGrayImage;cv::cvtColor(hostImage, hostGrayImage, cv::COLOR_BGR2GRAY);cv::imshow("Original Image", hostImage);cv::imshow("Grayscale Image (CPU)", hostGrayImage);cv::waitKey(0);}return 0;
}

重要提示: 在运行 OpenCV 示例之前,请确保将 path/to/your/image.jpg 替换为计算机上实际存在的图像文件的路径。


至此,您应该已经成功配置了 CMake、Visual Studio 2019 下的 OpenGL、OpenCV 和 CUDA 环境。如果在过程中遇到任何问题,请仔细检查路径和环境变量,这通常是问题所在。

您在设置过程中遇到任何具体问题了吗?
在这里插入图片描述

http://www.dtcms.com/a/293532.html

相关文章:

  • idea部署新项目时,用自定义的maven出现的问题解决
  • charles手机端抓包 ios 安卓通用
  • 【js(5)原型与原型链】
  • 反向传播及优化器
  • 【图像翻转+图像的仿射变换】——图像预处理(OpenCV)
  • 网络--VLAN技术
  • Ruby 命令行选项详解
  • C++ std::list概念与使用案例
  • Web后端实战:登录认证(JWT令牌生成和Filter过滤器Interceptor拦截器)
  • 前端ApplePay支付-H5全流程实战指南
  • 使用Docker搭建SearXNG搜索引擎
  • AI聊天方案:vue+nodeJs+SSE
  • 变频器带动电机:全方位解析参数变化
  • MCP与企业数据集成:ERP、CRM、数据仓库的统一接入
  • 第一层nginx访问url如何透传到第二层nginx
  • OpenLayers 快速入门(九)Extent 介绍
  • Leetcode力扣解题记录--第240题(矩阵搜索)
  • 数据科学与大数据技术和统计学有什么区别?​
  • 关于针对 DT_REG 出现红色波浪线的问题(编译错误/IDE警告),以下是 精准解决方案,保持你的代码功能完全不变:
  • 【Linux-云原生-笔记】Haproxy相关
  • 基于Python(Django)+MongoDB实现的(Web)新闻采集和订阅系统
  • 模拟实现消息队列项目
  • 使用PEghost恢复系统(笔记版)
  • OpenEuler系统架构下编译redis的RPM包
  • [Mediatek] MTK openwrt-21.02 wifi 没启动问题
  • Android Multidex 完全解析:解决64K方法数限制
  • Java 虚拟线程在高并发微服务中的实战经验分享
  • 从0开始学习R语言--Day55--弹性网络
  • TDengine 的 HISTOGRAM() 函数用户手册
  • LabVIEW激光雷达障碍物识别