OpenCV GitHub入门:如何下载、编译和使用源代码 – wiki基地

OpenCV GitHub入门:如何下载、编译和使用源代码

引言

OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软件库。它包含成千上万种优化的算法,为实时计算机视觉应用提供了强大的支持。无论您是学生、研究人员还是开发人员,掌握OpenCV都将为您的项目增添强大的视觉处理能力。

本文将详细介绍如何从OpenCV的官方GitHub仓库下载源代码,如何根据您的需求进行编译,以及如何在您的第一个项目中使用它。

为什么选择从GitHub获取OpenCV?

虽然大多数用户可以通过Python的pip包管理器或操作系统的包管理器轻松安装OpenCV,但从GitHub获取源代码并手动编译具有以下优势:

  • 获取最新功能:第一时间体验和使用OpenCV正在开发中的最新特性和算法。
  • 高度定制化:您可以根据项目需求选择性地编译模块,减小最终库文件的大小。例如,您可以决定是否包含opencv_contrib中的实验性模块。
  • 平台优化:针对您的特定硬件(如CPU指令集、CUDA支持)进行编译,以获得最佳性能。
  • C++开发:对于C++开发者来说,从源码编译是获取开发所需头文件和库文件的标准方式。

方法一:从源代码下载和编译

这种方法适用于C++开发者或需要高度定制化Python环境的高级用户。

1. 安装先决条件

在开始之前,您需要安装一些基本的开发工具。

  • Git: 用于从GitHub克隆源代码。
  • CMake: 一个跨平台的构建工具,用于生成适用于您操作系统的构建文件(如Visual Studio项目或Makefiles)。
  • C++编译器:
    • Windows: Visual Studio (推荐2017或更高版本)。
    • macOS: Xcode (安装命令行工具)。
    • Linux: GCC/G++。

2. 克隆OpenCV源代码

打开您的终端或Git Bash,克隆OpenCV的主仓库和可选的contrib仓库。contrib仓库包含了许多实验性或非自由的模块,但功能非常强大。

“`bash

克隆主仓库

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

克隆贡献模块仓库 (可选)

git clone https://github.com/opencv/opencv_contrib.git
“`

3. 使用CMake进行编译

编译过程的核心是使用CMake配置项目,然后使用您选择的编译器进行构建。

在Windows上使用Visual Studio编译

  1. 启动CMake (GUI): 打开CMake图形界面。
  2. 设置路径:
    • “Where is the source code”: 指向您刚刚克隆的 opencv 文件夹。
    • “Where to build the binaries”: 创建一个新的文件夹(如 opencv/build)并指向它。
  3. 配置 (Configure):
    • 点击 “Configure”。
    • 在弹出的窗口中,选择您安装的Visual Studio版本(如 “Visual Studio 16 2019″)和平台(x64)。
    • 点击 “Finish”。CMake会开始分析源代码并显示一系列可配置的选项。
  4. 设置opencv_contrib (可选):
    • 在CMake的选项列表中,找到 OPENCV_EXTRA_MODULES_PATH
    • 将其值设置为您克隆的 opencv_contrib/modules 文件夹的路径。
    • 再次点击 “Configure”。
  5. 生成 (Generate):
    • 所有配置完成后,点击 “Generate”。CMake将在您的 build 文件夹中生成Visual Studio解决方案文件 (.sln)。
  6. 在Visual Studio中编译:
    • 打开 build 文件夹中的 OpenCV.sln 文件。
    • 在Visual Studio中,将解决方案配置从 “Debug” 更改为 “Release”。
    • 在 “解决方案资源管理器” 中,找到 CMakeTargets > ALL_BUILD,右键点击并选择 “生成 (Build)”。这个过程可能需要一些时间。
    • 生成成功后,找到 CMakeTargets > INSTALL,右键点击并选择 “生成 (Build)”。这将把编译好的库和头文件安装到 build/install 目录中。

在macOS和Linux上编译

  1. 创建构建目录:
    bash
    cd opencv
    mkdir build
    cd build
  2. 运行CMake:

    • 基础配置:
      bash
      cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
    • 包含contrib模块 (可选):
      bash
      cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
      ..

      • CMAKE_BUILD_TYPE=RELEASE: 生成发布版本的库。
      • CMAKE_INSTALL_PREFIX=/usr/local: 指定库的安装路径。
      • OPENCV_EXTRA_MODULES_PATH: 指向contrib模块的路径。
      • ..: 指向上一级目录,即 opencv 源码根目录。
  3. 编译和安装:
    “`bash
    # 使用所有CPU核心进行编译,加快速度
    make -j$(nproc)

    安装到指定目录

    sudo make install
    “`

方法二:使用预编译的Python包

对于绝大多数Python用户来说,这是最简单快捷的方法。

1. 安装

打开终端,使用pip安装。

  • 只安装主模块:
    bash
    pip install opencv-python
  • 同时安装主模块和contrib模块:
    bash
    pip install opencv-contrib-python

注意:请不要同时安装这两个包,它们会产生冲突。选择一个即可。

2. 验证安装

安装完成后,打开Python解释器,尝试导入cv2模块。

python
import cv2
print(cv2.__version__)

如果成功打印出版本号,说明安装成功。

在项目中使用OpenCV:一个简单的例子

让我们用一个简单的例子来展示如何在C++和Python中加载并显示一张图片。

Python示例

创建一个名为 test_opencv.py 的文件。

“`python
import cv2

加载图片

将 ‘path/to/your/image.jpg’ 替换为你的图片路径

image_path = ‘path/to/your/image.jpg’
img = cv2.imread(image_path, cv2.IMREAD_COLOR)

检查图片是否成功加载

if img is None:
print(f”错误: 无法加载图片 at ‘{image_path}'”)
else:
# 显示图片
cv2.imshow(‘My Image’, img)

# 等待用户按键,然后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

“`

C++示例

对于C++,您需要配置您的项目以链接到编译好的OpenCV库。

  1. 创建一个名为 main.cpp 的文件。

“`cpp

include

include

int main() {
// 将 “path/to/your/image.jpg” 替换为你的图片路径
std::string image_path = “path/to/your/image.jpg”;
cv::Mat img = cv::imread(image_path, cv::IMREAD_COLOR);

if (img.empty()) {
    std::cout << "错误: 无法加载图片 at '" << image_path << "'" << std::endl;
    return -1;
}

cv::imshow("My Image", img);

cv::waitKey(0);
cv::destroyAllWindows();

return 0;

}
“`

  1. 编译命令 (Linux/macOS示例):
    您需要告诉编译器在哪里找到OpenCV的头文件和库文件。

    bash
    g++ main.cpp -o display_image `pkg-config --cflags --libs opencv4`
    ./display_image

    * pkg-config --cflags --libs opencv4 会自动生成链接OpenCV所需的编译器标志。

结论

通过本文,您应该已经了解了如何从GitHub获取OpenCV源代码,如何根据自己的需要进行编译,以及如何在Python和C++项目中进行基本使用。

从源代码编译为您提供了最大的灵活性和性能优化的可能性。对于Python用户,pip提供了一种极为便捷的安装方式。无论您选择哪种方式,强大的OpenCV库都将成为您开发计算机视觉应用的得力助手。现在,开始您的探索之旅吧!

滚动至顶部