OpenCV(Open Source Computer Vision Library)是一个广泛使用的开源计算机视觉和机器学习软件库,提供了丰富的功能模块,涵盖了图像处理、视频分析、计算机视觉、机器学习等多个领域。下面对一些重要、常用的 OpenCV 知识点汇总:
1. 图像基本操作
-
图像读写:
cv::imread():读取图像。cv::imwrite():保存图像。cv::imshow():显示图像。cv::cvtColor():颜色空间转换(如 RGB 转灰度图)。
-
图像属性:
cv::Mat:图像数据存储结构,二维矩阵,支持各种图像类型(如灰度图、彩色图等)。
-
图像处理基础:
- 图像大小:
img.rows、img.cols、img.size()。 - 通道数:
img.channels()。 - 图像深度:
img.depth()。
- 图像大小:
2. 图像变换
-
几何变换:
cv::resize():图像缩放。cv::rotate():图像旋转。cv::warpAffine():仿射变换。cv::warpPerspective():透视变换。
-
图像裁剪与填充:
- 使用
cv::Rect来裁剪图像。 cv::copyTo():用于复制图像区域。
- 使用
3. 图像滤波
-
平滑:
cv::blur():均值滤波。cv::GaussianBlur():高斯滤波。cv::medianBlur():中值滤波。cv::bilateralFilter():双边滤波(保持边缘的同时进行平滑)。
-
边缘检测:
cv::Canny():Canny 边缘检测。cv::Sobel():Sobel 算子。cv::Laplacian():拉普拉斯算子。
4. 图像特征检测与匹配
-
角点检测:
cv::cornerHarris():Harris 角点检测。cv::goodFeaturesToTrack():Shi-Tomasi 角点检测。
-
特征点检测:
cv::ORB()、cv::SIFT()、cv::SURF():特征检测与描述符提取。cv::AKAZE():快速的 AKAZE 特征。
-
特征匹配:
cv::BFMatcher():暴力匹配。cv::FlannBasedMatcher():基于 FLANN 的匹配器。cv::findHomography():基于 RANSAC 的单应性矩阵求解。
5. 图像分割与轮廓分析
-
阈值化:
cv::threshold():图像阈值化。cv::adaptiveThreshold():自适应阈值化。
-
轮廓检测:
cv::findContours():查找轮廓。cv::drawContours():绘制轮廓。cv::approxPolyDP():多边形拟合。
-
图像分水岭算法:
cv::watershed():分水岭算法,图像分割。
6. 图像形态学操作
-
基本形态学操作:
cv::erode():腐蚀。cv::dilate():膨胀。cv::morphologyEx():开运算、闭运算等。
-
结构元素:
cv::getStructuringElement():获取结构元素。
7. 视频处理与分析
-
视频读写:
cv::VideoCapture():读取视频。cv::VideoWriter():写入视频。
-
背景分离与运动检测:
cv::BackgroundSubtractorMOG2():背景减除。cv::optFlow():光流法,运动检测。
-
目标跟踪:
cv::TrackerKCF::create():KCF 跟踪器。cv::TrackerCSRT::create():CSRT 跟踪器。
8. 机器学习与深度学习
-
支持向量机(SVM):
cv::ml::SVM::train():训练 SVM 模型。cv::ml::SVM::predict():SVM 分类。
-
决策树与随机森林:
cv::ml::DTrees:决策树。cv::ml::RandomTrees:随机森林。
-
神经网络与深度学习:
- OpenCV DNN 模块:支持 Caffe、TensorFlow、Torch 等框架的模型加载和推理。
cv::dnn::readNet():加载模型。cv::dnn::blobFromImage():将图像转换为网络输入。
9. 相机标定与立体视觉
-
相机标定:
cv::calibrateCamera():相机标定。cv::findChessboardCorners():查找棋盘格角点。
-
立体匹配:
cv::StereoBM():块匹配算法。cv::StereoSGBM():半全局块匹配算法。
10. 三维重建与点云处理
-
立体匹配与深度图:
cv::stereoCalibrate():立体标定。cv::reprojectImageTo3D():将深度图重建为三维点云。
-
结构光与激光扫描:
- 使用
cv::triangulatePoints()进行三角测量。
- 使用
11. OpenCV 与其他库的集成
- 与 Qt 集成:OpenCV 可以与 Qt 配合使用,开发基于 GUI 的图像处理应用。
- 与 GStreamer 集成:处理视频流时,OpenCV 与 GStreamer 的结合可以提升视频捕获和处理性能。
12. OpenCV 实用工具
-
调试与优化:
cv::getTickCount()、cv::getTickFrequency():用于测量时间,性能优化。
-
图像显示与保存:
- 支持多种格式,如 BMP、PNG、JPEG 等。
这些是 OpenCV 中的一些基本知识点,涵盖了图像处理、特征检测、视频分析、机器学习等方面。