OpenCV GitHub 指南:下载、编译和使用 – wiki基地

OpenCV GitHub 指南:下载、编译和使用

OpenCV (Open Source Computer Vision Library) 是一个广泛使用的开源计算机视觉和机器学习软件库。它包含了数百种算法,涵盖图像处理、目标检测、视频分析、3D 重建等多个领域。由于其强大的功能和跨平台特性,OpenCV 被广泛应用于科研、工业和个人项目中。

本文将详细指导您如何从 GitHub 下载 OpenCV 源代码,进行编译构建,并在您的项目中使用它。我们将涵盖以下关键步骤:

  1. 环境准备: 安装必要的依赖项,包括编译器、构建工具和一些可选但常用的库。
  2. 从 GitHub 下载 OpenCV: 克隆 OpenCV 仓库,并选择合适的版本或分支。
  3. 使用 CMake 配置构建: 设置构建选项,指定编译器,选择所需的模块和功能。
  4. 编译 OpenCV: 使用构建工具(如 make 或 Visual Studio)编译 OpenCV 源代码。
  5. 安装 OpenCV: 将编译好的库文件和头文件复制到指定位置,以便系统可以找到它们。
  6. 在您的项目中使用 OpenCV: 配置项目的构建环境,包含 OpenCV 的头文件和库文件,编写代码并运行。

1. 环境准备:

在开始之前,我们需要安装一些必要的依赖项。这些依赖项会因您使用的操作系统而异。以下是一些常见操作系统的安装指南:

1.1 Windows:

  • 编译器:

    • Visual Studio: 推荐使用 Visual Studio 2019 或更高版本。在安装时,请确保选择 “Desktop development with C++” 工作负载。
    • MinGW (Minimalist GNU for Windows): 一个轻量级的 GCC 编译器,也可以用来编译 OpenCV。
  • CMake: 从 CMake 官网 (https://cmake.org/download/) 下载并安装最新版本的 CMake。安装过程中,选择将其添加到系统 PATH 环境变量中。

  • Python (可选): 如果您计划使用 OpenCV 的 Python 接口,需要安装 Python (3.x 版本) 并配置好环境变量。

  • 其他可选依赖项 (可以使用 NuGet 包管理器安装):

    • Eigen: 一个 C++ 模板库,用于线性代数运算。
    • TBB (Threading Building Blocks): 一个并行编程库,可以提高 OpenCV 的性能。
    • IPP (Intel Integrated Performance Primitives): 一个高性能的图像和信号处理库,可以显著提升 OpenCV 的特定功能的性能(需要 Intel 授权)。
    • CUDA (Compute Unified Device Architecture): 如果您希望使用 GPU 加速,需要安装 CUDA Toolkit。

1.2 Linux (Ubuntu/Debian):

打开终端并运行以下命令:

bash
sudo apt update
sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev

  • build-essential: 包含 GCC 编译器和其他必要的构建工具。
  • cmake: CMake 构建系统。
  • git: 用于从 GitHub 下载 OpenCV 源代码。
  • libgtk2.0-dev: 用于显示图像窗口的 GTK 库。
  • pkg-config: 用于查找已安装库的配置信息。
  • libavcodec-dev, libavformat-dev, libswscale-dev: 用于处理视频的 FFmpeg 库。
  • python3-dev, python3-numpy: Python 3 开发环境和 NumPy 库 (用于 Python 接口)。
  • libtbb2, libtbb-dev: Threading Building Blocks 库,用于并行计算。
  • libjpeg-dev, libpng-dev, libtiff-dev: 用于处理图像的 JPEG, PNG 和 TIFF 库。
  • libdc1394-22-dev: 用于处理 FireWire 相机的库。

1.3 macOS:

使用 Homebrew 包管理器:

bash
brew install cmake pkg-config opencv

这将安装 CMake 和预编译的 OpenCV 库。 如果您想自己编译 OpenCV,可以参考 Linux 的安装步骤,并使用 Homebrew 安装所需的依赖项 (例如:brew install ffmpeg tbb jpeg libpng libtiff 等).

2. 从 GitHub 下载 OpenCV:

访问 OpenCV 的 GitHub 仓库:https://github.com/opencv/opencv

有两种方式下载源代码:

  • 使用 Git 克隆仓库: 这是推荐的方式,因为它允许您轻松地更新到最新版本。

bash
git clone https://github.com/opencv/opencv.git
cd opencv

  • 下载 ZIP 文件: 您可以从 GitHub 仓库页面下载 OpenCV 的 ZIP 文件。解压 ZIP 文件后,您将得到 OpenCV 的源代码。

选择一个合适的版本或分支。master 分支通常包含最新的开发代码,可能不稳定。 4.x3.x 分支通常包含更稳定的发布版本。 使用 git checkout <branch_name> 切换到特定分支。 例如:

bash
git checkout 4.x

3. 使用 CMake 配置构建:

在 OpenCV 源代码目录中创建一个构建目录:

bash
mkdir build
cd build

使用 CMake 配置构建:

bash
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_ENABLE_NONFREE=ON ..

  • CMAKE_BUILD_TYPE: 指定构建类型 (Release 或 Debug)。 Release 版本进行了优化,速度更快,适合生产环境。 Debug 版本包含调试信息,方便开发调试。
  • CMAKE_INSTALL_PREFIX: 指定 OpenCV 的安装目录。 默认情况下,/usr/local 是一个常见的安装目录。 您可以将其更改为其他目录。
  • OPENCV_ENABLE_NONFREE: 指定是否启用非免费算法 (例如 SIFT, SURF)。 这些算法受到专利保护,可能需要在某些国家/地区付费使用。 设置为 ON 启用,设置为 OFF 禁用。
  • ..: 表示 OpenCV 源代码目录的上一级目录。

更详细的 CMake 配置选项:

可以使用 ccmake .. (在 Linux/macOS 上,需要安装 ncurses 开发库) 或 CMake GUI (在 Windows 上) 来查看和修改更多的配置选项。 一些常用的选项包括:

  • WITH_: 启用或禁用特定功能 (例如 WITH_CUDA, WITH_TBB, WITH_OPENGL)。
  • BUILD_opencv_: 构建或不构建特定的 OpenCV 模块 (例如 BUILD_opencv_core, BUILD_opencv_imgproc)。
  • BUILD_EXAMPLES: 构建示例程序。
  • BUILD_TESTS: 构建测试程序。

Windows 特别说明:

在 Windows 上,您需要指定编译器。 例如,使用 Visual Studio 2019:

bash
cmake -G "Visual Studio 16 2019" -A x64 -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=C:\opencv ..

  • -G “Visual Studio 16 2019”: 指定使用 Visual Studio 2019 编译器。 根据您使用的 Visual Studio 版本,更改数字。
  • -A x64: 指定目标平台为 64 位。 如果您需要 32 位版本,请使用 -A Win32。
  • CMAKE_INSTALL_PREFIX=C:\opencv: 指定 OpenCV 的安装目录。

4. 编译 OpenCV:

配置完成后,使用构建工具编译 OpenCV。

Linux/macOS:

bash
make -j$(nproc)

  • make: 调用 make 构建系统。
  • -j$(nproc): 使用多个线程并行编译,可以加快编译速度。 $(nproc) 返回 CPU 的核心数。

Windows:

打开 Visual Studio,加载 OpenCV 构建目录中的 OpenCV.sln 解决方案文件。 选择 Release 配置,然后右键单击 “ALL_BUILD” 项目,选择 “Build”。

5. 安装 OpenCV:

编译完成后,安装 OpenCV。

Linux/macOS:

bash
sudo make install

Windows:

在 Visual Studio 中,右键单击 “INSTALL” 项目,选择 “Build”。

这将把编译好的库文件和头文件复制到 CMAKE_INSTALL_PREFIX 指定的安装目录。

6. 在您的项目中使用 OpenCV:

现在您已经成功安装了 OpenCV,可以在您的项目中使用它了。 您需要配置您的项目的构建环境,使其能够找到 OpenCV 的头文件和库文件。

6.1 C++ 项目:

  • 包含头文件: 在您的 C++ 代码中,包含 OpenCV 的头文件。 例如:

c++
#include <opencv2/opencv.hpp>
using namespace cv;

  • 配置构建系统: 您需要在您的项目的构建系统中 (例如 CMake, Makefile, Visual Studio) 指定 OpenCV 的头文件目录和库文件目录。

CMake 示例:

“`cmake
cmake_minimum_required(VERSION 3.0)
project(MyOpenCVProject)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(MyOpenCVProject main.cpp)
target_link_libraries(MyOpenCVProject ${OpenCV_LIBS})
“`

  • find_package(OpenCV REQUIRED): 查找 OpenCV 的安装位置。
  • include_directories(${OpenCV_INCLUDE_DIRS}): 将 OpenCV 的头文件目录添加到 include 路径。
  • target_link_libraries(MyOpenCVProject ${OpenCV_LIBS}): 将 OpenCV 的库文件链接到您的项目。

Visual Studio 示例:

  • 包含目录: 在项目的属性页中,选择 “C/C++” -> “General” -> “Additional Include Directories”,添加 OpenCV 的头文件目录 (例如 C:\opencv\include)。
  • 库目录: 在项目的属性页中,选择 “Linker” -> “General” -> “Additional Library Directories”,添加 OpenCV 的库文件目录 (例如 C:\opencv\x64\vc16\lib)。 (根据你的Visual Studio 版本和架构调整路径)
  • 附加依赖项: 在项目的属性页中,选择 “Linker” -> “Input” -> “Additional Dependencies”,添加 OpenCV 的库文件名称 (例如 opencv_world455.lib opencv_core455.lib opencv_imgproc455.lib 等等。 您需要在安装目录下找到所有需要的库文件,并在附加依赖项中列出它们。 opencv_world455.lib 通常包含所有 OpenCV 模块,使用它可以简化配置).

6.2 Python 项目:

如果您在编译 OpenCV 时启用了 Python 接口,OpenCV 模块会自动安装到您的 Python 环境中。 您可以直接在 Python 代码中导入 OpenCV:

“`python
import cv2

读取图像

img = cv2.imread(“image.jpg”)

显示图像

cv2.imshow(“Image”, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
“`

确保您的 Python 环境可以找到 OpenCV 模块。 您可以通过以下方式检查:

bash
python -c "import cv2; print(cv2.__version__)"

如果输出 OpenCV 的版本号,则表示 OpenCV 已经成功安装到您的 Python 环境中。 如果出现 ModuleNotFoundError: No module named 'cv2' 错误,请检查您的 Python 环境变量,并确保 OpenCV 的 Python 绑定目录 (通常位于 OpenCV 安装目录下的 python_loader 文件夹中) 已经被添加到 Python 的搜索路径中。 例如,可以将 OpenCV 的 Python 绑定目录添加到 PYTHONPATH 环境变量中。

7. 示例代码:

以下是一个简单的 C++ 示例代码,用于读取图像,将其转换为灰度图像,并显示结果:

“`c++

include

include

using namespace cv;
using namespace std;

int main() {
// 读取图像
Mat image = imread(“image.jpg”, IMREAD_COLOR);

// 检查图像是否成功加载
if (image.empty()) {
cout << “Could not open or find the image!” << endl;
return -1;
}

// 将图像转换为灰度图像
Mat gray_image;
cvtColor(image, gray_image, COLOR_BGR2GRAY);

// 显示原始图像
imshow(“Original Image”, image);

// 显示灰度图像
imshow(“Gray Image”, gray_image);

// 等待按键
waitKey(0);

// 释放窗口
destroyAllWindows();

return 0;
}
“`

将上述代码保存为 main.cpp 文件,并创建一个名为 image.jpg 的图像文件。 然后,使用您配置好的构建系统编译并运行该程序。

总结:

本文详细介绍了如何从 GitHub 下载 OpenCV 源代码,进行编译构建,并在您的项目中使用它。 遵循以上步骤,您应该能够成功地安装 OpenCV,并开始使用它来解决各种计算机视觉问题。 记住,根据你的操作系统和项目需求,你可能需要调整一些配置选项。 查阅 OpenCV 官方文档和社区论坛可以帮助你解决遇到的问题。 祝您在使用 OpenCV 的过程中取得成功!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部