# OpenCV CPP Lecture Notes and Tutorial **Repository Path**: liufumore/open-cv-cpp-lecture-notes-and-tutorial ## Basic Information - **Project Name**: OpenCV CPP Lecture Notes and Tutorial - **Description**: opencv cpp 讲义教程 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-04 - **Last Updated**: 2026-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C++ OpenCV 学习项目 📚 一个系统化的 **C++ OpenCV 计算机视觉学习笔记**,涵盖从环境安装、基础操作到机器学习、深度学习与项目实战的完整知识体系。 OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,包含数百个计算机视觉算法,广泛应用于图像处理、视频分析、物体检测、人脸识别等领域。C++ 是 OpenCV 的原始开发语言,适合高性能应用。 --- ## 📁 项目结构 | 章节 | 内容 | 核心知识点 | | :--- | :--- | :--- | | [01-OpenCV 安装(C++)](01-OpenCV%20安装(C++)/OpenCV%20安装(C++).md) | 环境搭建 | 预编译包安装、源码编译(CMake)、Visual Studio 配置、常见问题 | | [02-C++OpenCV 基础操作](02-C++OpenCV%20基础操作/C++%20OpenCV%20基础操作.md) | 图像入门 | 读取/显示/保存、像素操作、几何变换、颜色空间转换 | | [03-C++OpenCV图像处理](03-C++OpenCV图像处理/C++%20OpenCV%20图像处理.md) | 图像处理 | 滤波、边缘检测、形态学操作、阈值化、直方图 | | [04-C++OpenCV基本模块](04-C++OpenCV基本模块/C++%20OpenCV%20基本模块.md) | 模块体系 | Core、Imgproc、Highgui、Video、Calib3d、DNN 等核心模块 | | [05-C++OpenCV特征检测](05-C++OpenCV特征检测/C++%20OpenCV%20特征检测.md) | 特征工程 | Harris/Shi-Tomasi 角点、SIFT/SURF/ORB、BFMatcher/FLANN 匹配 | | [06-C++OpenCV高级图像处理](06-C++OpenCV高级图像处理/C++%20OpenCV%20高级图像处理.md) | 进阶处理 | 图像分割、分水岭算法、轮廓检测、模板匹配 | | [07-C++OpenCV视频处理](07-C++OpenCV视频处理/C++%20OpenCV%20视频处理.md) | 视频分析 | VideoCapture/VideoWriter、摄像头、背景减除、光流 | | [08-C++OpenCV机器学习与深度学习](08-C++OpenCV机器学习与深度学习/C++%20OpenCV%20机器学习与深度学习.md) | AI 基础 | K-Means、SVM、PCA、DNN 模型加载、YOLO 目标检测 | | [09-C++OpenCV项目实战](09-C++OpenCV项目实战/C++%20OpenCV%20项目实战.md) | 综合实战 | 图像滤镜、实时人脸检测、车牌识别、AR、多目标跟踪 | | [10-C++OpenCV性能优化](10-C++OpenCV性能优化/C++%20OpenCV%20性能优化.md) | 性能优化 | OpenCL 加速、多线程(parallel_for_)、内存优化、代码优化 | --- ## 🚀 快速开始 ### 环境要求 - **OpenCV 4.x**(预编译包或源码编译) - **C++ 编译器**:MSVC(Visual Studio)或 GCC - **CMake**(源码编译时需要) - **操作系统**:Windows / Linux / macOS ### 安装 OpenCV(Windows 快速版) 1. 从 [OpenCV 官网](https://opencv.org/releases/) 下载 Windows 预编译包并解压(如 `C:\opencv`) 2. 将 `C:\opencv\build\x64\vc15\bin` 添加到系统 **PATH** 环境变量 3. Visual Studio 项目属性中配置: - **包含目录**:`C:\opencv\build\include` - **库目录**:`C:\opencv\build\x64\vc15\lib` - **附加依赖项**:`opencv_world4xx.lib`(`4xx` 为版本号,如 `opencv_world450.lib`) > 完整步骤(含源码编译方式)见 [01-OpenCV 安装(C++)](01-OpenCV%20安装(C++)/OpenCV%20安装(C++).md) ### 第一个程序 ```c++ #include #include int main() { cv::Mat image = cv::imread("example.jpg"); if (image.empty()) { std::cout << "无法加载图片!" << std::endl; return -1; } cv::imshow("Display Image", image); cv::waitKey(0); return 0; } ``` 编译运行: ```bash cmake --build build --config Release --target main ./build/Release/main.exe example.jpg ``` --- ## 📖 学习路径 项目按递进顺序组织,建议按以下路径学习: 1. **环境搭建** → 01 安装配置 OpenCV 2. **图像基础** → 02 读取显示保存、像素操作、几何变换、颜色空间 3. **核心图像处理** → 03 滤波、边缘检测、形态学、阈值化、直方图 4. **模块认知** → 04 了解 OpenCV 各模块的功能与定位 5. **特征检测** → 05 角点检测、特征点检测、特征匹配 6. **高级图像处理** → 06 图像分割、分水岭、轮廓、模板匹配 7. **视频处理** → 07 视频读写、摄像头、背景减除、光流 8. **机器学习与深度学习** → 08 K-Means、SVM、PCA、DNN、YOLO 9. **项目实战** → 09 综合运用所学知识完成实战项目 10. **性能优化** → 10 加速与优化技巧 --- ## 🧩 内容亮点 ### 图像处理核心 - **滤波**:均值、高斯、中值滤波及 `filter2D` 自定义滤波器 - **边缘检测**:Sobel 算子、Canny 多阶段边缘检测 - **形态学**:腐蚀、膨胀、开闭运算、形态学梯度 - **阈值化**:二值化、自适应阈值、Otsu 自动阈值 - **直方图**:计算、均衡化增强对比度、直方图对比 ### 特征检测与匹配 - **角点**:Harris、Shi-Tomasi(`goodFeaturesToTrack`) - **特征点**:SIFT、SURF(`xfeatures2d`)、ORB - **匹配**:BFMatcher 暴力匹配、FLANN 近似最近邻 - **筛选**:基于距离(`radiusMatch`)和几何约束(RANSAC 单应性) ### 视频与 AI - **视频**:文件/摄像头读取、`VideoWriter` 保存、MOG2 背景减除、Lucas-Kanade 光流 - **机器学习**:K-Means 聚类、SVM 分类、PCA 降维 - **深度学习**:DNN 模块加载 Caffe/TensorFlow/Darknet 模型、YOLO 目标检测、NMS 非极大值抑制 ### 实战项目 - 图像滤镜应用(灰度、高斯模糊、边缘检测) - 实时人脸检测(Haar 级联分类器) - 车牌识别(级联检测 + 字符识别) - 简单 AR 应用(虚拟物体叠加) - 视频监控与运动检测(帧差法) - 多目标跟踪(KCF / MultiTracker) - YOLO 目标检测(含 NMS 后处理) ### 性能优化 - **OpenCL 加速**:`cv::UMat` + `cv::ocl::setUseOpenCL(true)` - **多线程**:`cv::parallel_for_` 并行计算 - **内存优化**:引用计数、`clone()` 避免共享数据修改 - **代码优化**:减少循环嵌套、避免重复计算 --- ## 🛠️ 使用说明 - 所有章节均为 **Markdown 笔记**,内含完整的可运行 C++ 代码示例(以 `实例` 标注) - 每章的代码示例遵循统一的加载检查模式(`image.empty()` 判断),可直接复制运行 - 示例中使用的 `test.jpg` 等图片资源请替换为你本地的图片路径 - Windows 下代码含 `SetConsoleOutputCP(CP_UTF8)` 以保证中文输出不乱码 --- ## 📄 License 本项目为个人学习笔记,仅供学习交流使用。OpenCV 本身采用 Apache 2.0 开源协议。