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编译
- 启动CMake (GUI): 打开CMake图形界面。
- 设置路径:
- “Where is the source code”: 指向您刚刚克隆的
opencv文件夹。 - “Where to build the binaries”: 创建一个新的文件夹(如
opencv/build)并指向它。
- “Where is the source code”: 指向您刚刚克隆的
- 配置 (Configure):
- 点击 “Configure”。
- 在弹出的窗口中,选择您安装的Visual Studio版本(如 “Visual Studio 16 2019″)和平台(x64)。
- 点击 “Finish”。CMake会开始分析源代码并显示一系列可配置的选项。
- 设置
opencv_contrib(可选):- 在CMake的选项列表中,找到
OPENCV_EXTRA_MODULES_PATH。 - 将其值设置为您克隆的
opencv_contrib/modules文件夹的路径。 - 再次点击 “Configure”。
- 在CMake的选项列表中,找到
- 生成 (Generate):
- 所有配置完成后,点击 “Generate”。CMake将在您的
build文件夹中生成Visual Studio解决方案文件 (.sln)。
- 所有配置完成后,点击 “Generate”。CMake将在您的
- 在Visual Studio中编译:
- 打开
build文件夹中的OpenCV.sln文件。 - 在Visual Studio中,将解决方案配置从 “Debug” 更改为 “Release”。
- 在 “解决方案资源管理器” 中,找到 CMakeTargets > ALL_BUILD,右键点击并选择 “生成 (Build)”。这个过程可能需要一些时间。
- 生成成功后,找到 CMakeTargets > INSTALL,右键点击并选择 “生成 (Build)”。这将把编译好的库和头文件安装到
build/install目录中。
- 打开
在macOS和Linux上编译
- 创建构建目录:
bash
cd opencv
mkdir build
cd build -
运行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源码根目录。
- 基础配置:
-
编译和安装:
“`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库。
- 创建一个名为
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;
}
“`
-
编译命令 (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库都将成为您开发计算机视觉应用的得力助手。现在,开始您的探索之旅吧!