如何使用 OpenCV GitHub 仓库 – wiki基地

深入探索 OpenCV GitHub 仓库:从入门到贡献

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它拥有超过2500个优化算法,涵盖了计算机视觉领域的各个方面,从基本的图像处理到高级的物体检测、人脸识别、三维重建等。OpenCV 的强大功能、跨平台特性以及活跃的社区使其成为学术界和工业界的首选工具。

OpenCV 的核心代码、文档、示例以及社区贡献都托管在 GitHub 上。对于希望学习、使用甚至为 OpenCV 做出贡献的开发者来说,GitHub 仓库是不可或缺的资源。本文将深入探讨 OpenCV GitHub 仓库,指导您从入门到贡献,全面了解如何充分利用这个宝贵的资源。

一、OpenCV GitHub 仓库概览

OpenCV 的主仓库地址为:https://github.com/opencv/opencv

这个仓库包含了 OpenCV 的核心代码,以及用于构建、测试和打包 OpenCV 的相关脚本。除了主仓库外,还有一个重要的仓库:

OpenCV Contrib 仓库地址为:https://github.com/opencv/opencv_contrib

opencv_contrib 仓库包含了社区贡献的额外模块。这些模块通常是一些实验性的、较新的或者由于许可原因不能包含在主仓库中的算法和功能。

仓库目录结构

进入主仓库,您会看到如下主要的目录结构:

  • apps: 包含一些使用 OpenCV 构建的应用程序示例,例如人脸检测、目标跟踪等。
  • cmake: 包含用于 CMake 构建系统的配置文件。CMake 是 OpenCV 使用的跨平台构建工具。
  • data: 包含一些示例数据,例如 Haar 级联分类器的数据文件(用于人脸检测等)。
  • doc: 包含 OpenCV 的文档,包括教程、API 参考等。
  • include: 包含 OpenCV 的头文件。在使用 OpenCV 开发应用程序时,您需要包含这些头文件。
  • modules: 包含 OpenCV 的核心模块,例如:
    • core: 核心功能模块,包含基本数据结构、数学运算、绘图函数等。
    • imgproc: 图像处理模块,包含图像滤波、几何变换、颜色空间转换等。
    • imgcodecs: 图像编解码模块,用于读取和写入各种图像格式。
    • videoio: 视频 I/O 模块,用于读取和写入视频文件。
    • highgui: 高级 GUI 模块,提供简单的用户界面功能,例如窗口创建、图像显示等。
    • calib3d: 相机标定和三维重建模块。
    • features2d: 二维特征检测和描述模块。
    • objdetect: 目标检测模块。
    • dnn: 深度神经网络模块。
    • ml: 机器学习模块。
    • … 还有更多模块
  • platforms: 包含针对不同平台(如 Windows、Linux、macOS、Android、iOS)的特定代码和构建脚本。
  • samples: 包含各种使用 OpenCV 的示例代码,涵盖了不同模块和功能。
  • 3rdparty: 包含 OpenCV 使用的一些第三方库。
  • LICENSE: OpenCV 的许可证文件(通常是 Apache 2.0 许可证)。
  • README.md: 仓库的说明文件,包含 OpenCV 的简介、构建说明等。

opencv_contrib 仓库的目录结构与主仓库类似,主要区别在于 modules 目录包含了额外的模块。

二、获取 OpenCV 源代码

有两种主要方式获取 OpenCV 源代码:

  1. 下载发布版本 (Recommended for most users)

    这是大多数用户的推荐方式。OpenCV 团队会定期发布稳定版本,这些版本经过了充分测试,可以直接下载使用。

    • 访问 OpenCV 的 GitHub 发布页面:https://github.com/opencv/opencv/releases
    • 选择您需要的版本(通常是最新的稳定版本)。
    • 在 “Assets” 部分,下载源代码压缩包(Source code (zip)Source code (tar.gz))。
    • 解压压缩包即可。

    如果您需要 opencv_contrib 模块,可以在 opencv_contrib 仓库的发布页面下载对应版本的源代码:https://github.com/opencv/opencv_contrib/releases

  2. 使用 Git 克隆仓库 (For developers and advanced users)

    如果您需要最新的开发版本、需要跟踪 OpenCV 的开发进度、或者希望为 OpenCV 做出贡献,那么使用 Git 克隆仓库是更好的选择。

    • 安装 Git:如果您的系统中还没有安装 Git,请先安装 Git。
    • 克隆主仓库:打开命令行终端(或 Git Bash),执行以下命令:

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

      这将会把 OpenCV 主仓库克隆到当前目录下的 opencv 文件夹中。
      * 克隆 contrib 仓库(可选):如果您需要 opencv_contrib 模块,可以执行以下命令:

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

      这将会把 opencv_contrib 仓库克隆到当前目录下的 opencv_contrib 文件夹中。
      * 切换分支(可选):OpenCV 仓库有多个分支,通常 master 分支是开发分支,而 4.x3.x 等分支是稳定版本分支。如果您需要切换到特定分支,可以使用以下命令:

      bash
      cd opencv
      git checkout 4.x # 切换到 4.x 分支

      或者

      bash
      cd opencv
      git checkout master #切换到master主分支

      切换分支前,请确保你的本地没有未提交的修改。

三、构建 OpenCV

获取源代码后,您需要构建 OpenCV 才能使用。OpenCV 使用 CMake 作为构建系统,因此您需要安装 CMake。

1. 安装 CMake

  • Windows: 从 CMake 官网下载安装程序并安装:https://cmake.org/download/
  • Linux: 使用包管理器安装 CMake。例如,在 Ubuntu/Debian 上:

    bash
    sudo apt-get update
    sudo apt-get install cmake

    * macOS: 使用 Homebrew 安装 CMake:

    bash
    brew install cmake

2. 构建步骤

以下是构建 OpenCV 的基本步骤:

  • 创建构建目录:为了保持源代码目录的整洁,建议创建一个单独的构建目录。

    bash
    cd opencv
    mkdir build
    cd build

    * 运行 CMake:在构建目录中运行 CMake,指定源代码目录和一些构建选项。

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

    • CMAKE_BUILD_TYPE: 指定构建类型,通常为 Release(优化)或 Debug(调试)。
    • CMAKE_INSTALL_PREFIX: 指定安装目录,安装后 OpenCV 的库文件、头文件等会被复制到这个目录。
    • ..: 表示源代码目录是上级目录。

    如果您需要构建包含 opencv_contrib 模块的 OpenCV,可以在 CMake 命令中添加 -D OPENCV_EXTRA_MODULES_PATH=<path_to_opencv_contrib>/modules 选项,其中 <path_to_opencv_contrib>opencv_contrib 仓库的路径。例如:

    bash
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

    CMake 提供了许多其他选项,用于配置 OpenCV 的构建,例如启用/禁用某些模块、指定编译器、指定 Python 版本等。您可以通过 cmake -LH .. 命令查看所有可用的选项。

  • 编译:运行 make 命令开始编译。

    bash
    make -j$(nproc) # 使用所有可用的 CPU 核心进行编译,加快编译速度

    编译过程可能需要一段时间,具体取决于您的系统配置和 OpenCV 的配置。
    * 安装(可选):编译完成后,您可以将 OpenCV 安装到指定的安装目录。

    bash
    sudo make install

    在windows平台,以管理员权限启动的VS的开发人员命令提示中,可以使用 msbuild INSTALL.vcxproj 完成安装。

四、使用 OpenCV

构建完成后,您就可以在您的项目中使用 OpenCV 了。

1. C++ 示例

“`c++

include

include

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

// 检查图像是否成功读取
if (image.empty()) {
std::cerr << “Could not read the image!” << std::endl;
return -1;
}

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

// 显示图像
cv::imshow(“Original Image”, image);
cv::imshow(“Gray Image”, grayImage);

// 等待按键
cv::waitKey(0);

return 0;
}
“`

编译 C++ 示例

您需要使用编译器(如 g++ 或 clang++)编译 C++ 代码,并链接 OpenCV 库。

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

  • pkg-config 是一个用于获取库的编译和链接选项的工具。如果您安装了 OpenCV,pkg-config --cflags --libs opencv4 会输出正确的编译和链接选项。
    如果找不到opencv4,尝试opencv
  • 如果您的 OpenCV 安装在非标准目录,您可能需要手动指定包含目录和库目录。

2. Python 示例

“`python
import cv2

读取图像

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

检查图像是否成功读取

if image is None:
print(“Could not read the image!”)
exit()

将图像转换为灰度图

gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

显示图像

cv2.imshow(“Original Image”, image)
cv2.imshow(“Gray Image”, gray_image)

等待按键

cv2.waitKey(0)
cv2.destroyAllWindows()
“`

运行 Python 示例

确保您已经安装了 OpenCV 的 Python 绑定(通常通过 pip install opencv-pythonpip install opencv-contrib-python 安装)。然后,您可以直接运行 Python 脚本:

bash
python main.py

五、探索 OpenCV 文档和示例

OpenCV GitHub 仓库包含了丰富的文档和示例,可以帮助您学习和使用 OpenCV。

  • 文档doc 目录包含了 OpenCV 的文档,包括教程、API 参考等。您可以在本地构建文档,也可以在线访问:https://docs.opencv.org/
  • 示例samples 目录包含了各种使用 OpenCV 的示例代码,涵盖了不同模块和功能。这些示例是学习 OpenCV 的绝佳资源。

六、为 OpenCV 做出贡献

如果您在使用 OpenCV 过程中发现了 bug、有改进建议或者希望添加新功能,欢迎您为 OpenCV 做出贡献。

1. 报告 Bug 或提出功能请求

  • 访问 OpenCV 的问题跟踪器:https://github.com/opencv/opencv/issues
  • 搜索是否已经有类似的问题或请求。
  • 如果没有,创建一个新的 issue,详细描述 bug 或功能请求。

2. 提交代码

如果您希望修复 bug 或添加新功能,可以按照以下步骤提交代码:

  • Fork 仓库:在 GitHub 上 fork OpenCV 主仓库(或 opencv_contrib 仓库,如果您要贡献的是额外模块)。
  • 创建分支:在您的 fork 中创建一个新的分支,用于您的修改。
  • 进行修改:在您的分支中进行代码修改、添加测试、更新文档等。
  • 提交 Pull Request:完成修改后,创建一个 Pull Request,将您的分支合并到 OpenCV 主仓库(或 opencv_contrib 仓库)。
  • 代码审查:OpenCV 社区的成员会审查您的代码,提出修改意见。
  • 合并:如果您的代码通过了审查,它将被合并到 OpenCV 中。

贡献指南

在为 OpenCV 做出贡献之前,请务必阅读 OpenCV 的贡献指南:

七、总结

OpenCV GitHub 仓库是学习、使用和贡献 OpenCV 的核心资源。本文详细介绍了如何获取源代码、构建 OpenCV、使用 OpenCV、探索文档和示例,以及为 OpenCV 做出贡献。希望这篇文章能帮助您更好地利用 OpenCV GitHub 仓库,深入探索计算机视觉的世界。 通过深入了解和利用 OpenCV 的 GitHub 仓库,您可以充分发挥这个强大工具的潜力,解决各种计算机视觉问题,并为开源社区做出贡献。

发表评论

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

滚动至顶部