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 中的一些基本知识点,涵盖了图像处理、特征检测、视频分析、机器学习等方面。