OpenCV C++ Demo 编译与运行指南

OpenCV C++ Demo 编译与运行指南

本文档旨在指导如何从源码下载、编译OpenCV,以及如何编译和运行一个简单的C++ OpenCV demo程序。

1. 下载 OpenCV 源码

可以从以下链接下载OpenCV和OpenCV-contrib的指定版本源码包:

将下载的源码包解压。确保 opencv 目录和 opencv_contrib 目录位于相同的父目录内。例如,如果父目录是 C:\Users\Hao\Desktop\Desktop\VmShare_2\opencv,那么解压后应该有 C:\Users\Hao\Desktop\Desktop\VmShare_2\opencv\opencv-4.12.0C:\Users\Hao\Desktop\Desktop\VmShare_2\opencv\opencv_contrib-4.12.0

2. 编译 OpenCV

2.1. 准备构建目录

opencv-4.12.0 目录下建立 build 子目录并进入该目录:

mkdir opencv-4.12.0/build
cd opencv-4.12.0/build

2.2. 执行 CMake 命令

opencv-4.12.0/build 目录下执行以下 CMake 命令来配置编译:

cmake -G "Visual Studio 17 2022" -A x64 `
  -D CMAKE_BUILD_TYPE=Release `
  -D CMAKE_INSTALL_PREFIX=install `
  -D INSTALL_C_EXAMPLES=ON `
  -D INSTALL_PYTHON_EXAMPLES=ON `
  -D OPENCV_GENERATE_PKGCONFIG=ON `
  -D OPENCV_EXTRA_MODULES_PATH=C:\Users\Hao\Desktop\Desktop\VmShare_2\opencv\opencv_contrib-4.12.0\modules `
  -D BUILD_EXAMPLES=ON `
  ..\opencv-4.12.0

2.3. 开始编译和安装

配置完成后,执行以下命令开始编译并安装OpenCV:

cmake --build . --config Release --target INSTALL

这将编译OpenCV并将安装文件(包括头文件、库文件和DLL文件)放置在 opencv-4.12.0/build/install 目录下。

3. 创建 C++ Demo 文件 (main.cpp)

demo 目录下创建 main.cpp 文件,内容如下:

#include <iostream>
#include <opencv2/opencv.hpp>

int main() {
    std::cout << "OpenCV Version: " << CV_VERSION << std::endl;
    cv::Mat image = cv::imread("test.jpg"); // 尝试加载一张图片
    if (image.empty()) {
        std::cerr << "Error: Could not open or find the image." << std::endl;
        // 如果图片未找到,创建一个简单的白色图像作为替代
        image = cv::Mat(200, 300, CV_8UC3, cv::Scalar(255, 255, 255));
    }
    cv::imshow("Demo Image", image);
    cv::waitKey(0);
    return 0;
}

4. 创建 CMakeLists.txt 文件

demo 目录下创建 CMakeLists.txt 文件,内容如下:

cmake_minimum_required(VERSION 3.10)
project(OpenCVDemo CXX)

# 设置OpenCV的安装路径
# 根据您的编译配置,OpenCV的安装路径应指向包含OpenCVConfig.cmake文件的目录
# 这里假设OpenCVConfig.cmake在 ../build/install/x64/vc17/lib 目录下
set(OpenCV_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../build/install/x64/vc17/lib")

# 查找OpenCV包
find_package(OpenCV REQUIRED)

# 包含OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})

# 添加可执行文件
add_executable(OpenCVDemo main.cpp)

# 链接OpenCV库
target_link_libraries(OpenCVDemo ${OpenCV_LIBS})

注意OpenCV_DIR 的路径 "${CMAKE_CURRENT_SOURCE_DIR}/../build/install/x64/vc17/lib" 请确保此路径与实际的OpenCV安装路径一致,它应该指向包含 OpenCVConfig.cmake 文件的目录。

5. 编译和构建 Demo 项目

按照以下步骤在 demo 目录下编译和构建项目:

  1. 创建构建目录

    mkdir build
    
  2. 生成Visual Studio项目文件
    demo 目录下执行此命令,它将在 build 目录中生成项目文件。

    cmake -G "Visual Studio 17 2022" -A x64 -B build .
    
    • -G "Visual Studio 17 2022":指定生成器为Visual Studio 2022。
    • -A x64:指定目标架构为x64。
    • -B build:指定构建目录为 build
    • .:指定源目录为当前目录(即 demo 目录)。
  3. 编译项目

    cmake --build build --config Release
    

    此命令将编译项目并生成 OpenCVDemo.exe 可执行文件,位于 build/Release 目录下。

6. 解决 DLL 依赖问题

由于 OpenCVDemo.exe 依赖于OpenCV的动态链接库(DLL文件),您需要确保这些DLL文件在程序运行时可被找到。最简单的方法是将它们复制到 OpenCVDemo.exe 所在的目录。

  1. 复制 DLL 文件
    demo 目录下执行以下命令,将所有OpenCV的DLL文件从安装目录复制到 build/Release 目录。
    copy ..\build\install\x64\vc17\bin\*.dll build\Release\
    

7. 运行 Demo

现在,可以运行编译好的Demo程序了:

  1. 运行可执行文件
    demo 目录下执行:

    ./build/Release/OpenCVDemo.exe
    
  2. 预期结果

    • 如果 test.jpg 文件不存在,您将看到一个名为 "Demo Image" 的窗口,其中显示一个白色的方块,并且终端会输出 "Error: Could not open or find the image."。
    • 如果您将一张名为 test.jpg 的图片文件放置在 c:/Users/Hao/Desktop/Desktop/VmShare_2/opencv/demo/build/Release 目录下,程序将加载并显示该图片。

总结

通过以上步骤,已经成功地创建、编译并运行了一个调用您本地编译的OpenCV库的C++ demo程序。

posted @ 2025-09-11 22:20  可乐芬达  阅读(74)  评论(0)    收藏  举报