什么是 OpenCV 以及为什么需要它?
OpenCV(开源计算机视觉库)是一个跨平台的开源库,专为计算机视觉和机器学习任务而设计。它提供了超过 2500 个优化算法,涵盖了计算机视觉的几乎所有领域:从简单的图像处理(滤波、几何变换)到复杂任务(人脸识别、目标跟踪、3D 重建、视频分析)。
该库使用 C++ 和 C 编写,确保了高性能,并提供了对 Python、Java、MATLAB 及其他语言的绑定。在本指南中,我们将重点介绍如何在 C++ 中使用 OpenCV——这是对速度和内存管理效率要求较高的生产系统的最佳选择。
为什么需要 OpenCV?
- 图像处理:调整大小、旋转、滤波、对比度增强、颜色校正。
- 视频分析:读取/写入视频、运动检测、目标跟踪。
- 目标识别:人脸、车辆、文本(OCR)、手势。
- 相机标定:畸变校正、立体视觉。
- 机器学习:内置分类器(SVM、KNN、决策树)以及与 DNN(深度神经网络)的集成,用于处理 TensorFlow、Caffe、PyTorch 模型。
为 C++ 安装 OpenCV
与 Python 只需一条命令 pip install opencv-python 不同,为 C++ 安装 OpenCV 需要编译或使用预构建的二进制包。我们来看看主要方法。
1. 通过包管理器安装(Linux/macOS)
Ubuntu/Debian:
sudo apt updatesudo apt install libopencv-devmacOS(Homebrew):
brew install opencv2. 通过 vcpkg 安装(Windows、Linux、macOS)
vcpkg 是微软的跨平台包管理器。首先安装 vcpkg:
git clone https://github.com/Microsoft/vcpkg.gitcd vcpkg./bootstrap-vcpkg.sh # Linux/macOS.\\bootstrap-vcpkg.bat # Windows然后安装 OpenCV:
./vcpkg install opencv4安装后,在 CMake 中链接库:
cmake_minimum_required(VERSION 3.10)project(MyOpenCVProject)find_package(OpenCV REQUIRED)add_executable(main main.cpp)target_link_libraries(main ${OpenCV_LIBS})3. 从源码编译(高级)
这种方法可以最大程度地控制包含的模块和优化:
git clone https://github.com/opencv/opencv.gitcd opencvmkdir build && cd buildcmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=ON \ -D WITH_OPENGL=ON ..make -j$(nproc)sudo make install快速入门:加载并显示图像
让我们编写一个简单的程序来验证 OpenCV 是否正确安装,该程序加载图像,将其转换为灰度并显示。
#include <opencv2/opencv.hpp>#include <iostream>
int main() { // 加载图像 cv::Mat img = cv::imread("example.jpg"); if (img.empty()) { std::cerr << "无法加载图像!" << std::endl; return -1; }
// 转换为灰度 cv::Mat gray; cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);
// 显示两个图像 cv::imshow("Original", img); cv::imshow("Gray", gray);
// 等待按键 cv::waitKey(0); cv::destroyAllWindows();
return 0;}
图书馆中也有
推荐