OpenCV 算子速查手册(按应用场景分类)
本手册按计算机视觉实际开发高频场景分类,每个场景划分核心算子(实现场景核心功能的必备算子)和辅助算子(配合核心算子做预处理/后处理/优化),算子标注完整cv::xxx格式,附极简功能说明,兼顾速查性和实用性,覆盖99%的OpenCV开发需求。
一、相机标定(单目/双目/手眼)
核心场景:单目内参标定、双目立体标定、手眼标定(eye-in-hand/eye-to-hand)、标定结果验证与应用
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::findChessboardCornersSB | 棋盘格角点检测(亚像素,高精度) |
| cv::findCirclesGrid | 圆点标定板角点检测 | |
| cv::calibrateCamera | 单目相机内参+畸变系数标定 | |
| cv::stereoCalibrate | 双目相机立体标定(内外参+极线约束) | |
| cv::calibrateHandEye | 手眼标定(eye-in-hand/eye-to-hand) | |
| cv::stereoRectify | 双目图像校正矩阵计算 | |
| cv::projectPoints | 3D点投影到2D图像(标定验证) | |
| 辅助算子 | cv::cornerSubPix | 角点亚像素精修(提升标定精度) |
| cv::drawChessboardCorners | 标定板角点可视化 | |
| cv::initUndistortRectifyMap | 生成畸变校正映射表 | |
| cv::undistort | 图像畸变校正(直接应用) | |
| cv::drawFrameAxes | 3D坐标系绘制(位姿标定结果验证) |
二、图像预处理(去噪/增强/二值化)
核心场景:图像去噪、对比度增强、灰度化、二值化、形态学优化,为后续任务做基础处理
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::GaussianBlur | 高斯去噪(通用型,最常用) |
| cv::medianBlur | 中值去噪(抑制椒盐噪声) | |
| cv::bilateralFilter | 双边滤波(保边去噪,人像/边缘场景) | |
| cv::cvtColor | 色彩空间转换(BGR→灰度/HSV/Lab) | |
| cv::threshold | 固定阈值二值化(含OTSU自动阈值) | |
| cv::morphologyEx | 高级形态学操作(开/闭运算/梯度) | |
| cv::equalizeHist | 全局直方图均衡化(对比度增强) | |
| 辅助算子 | cv::createCLAHE | 自适应直方图均衡化(CLAHE,抗噪声放大) |
| cv::boxFilter | 盒滤波(快速平滑) | |
| cv::dilate/erode | 基础形态学(膨胀/腐蚀,单独使用) | |
| cv::filter2D | 自定义卷积(锐化/边缘增强) | |
| cv::pyrMeanShiftFiltering | 均值漂移滤波(色彩聚类平滑) |
三、特征检测与提取
核心场景:边缘、角点、直线、圆/椭圆等图像特征的检测与提取,为配准/定位/识别做基础
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::Canny | Canny边缘检测(单像素宽度,最常用) |
| cv::goodFeaturesToTrack | Shi-Tomasi角点检测(强角点提取,自动筛选) | |
| cv::cornerHarris | Harris角点检测(经典角点算法) | |
| cv::HoughLinesP | 概率霍夫直线检测(检测有限长线段) | |
| cv::HoughCircles | 霍夫圆检测(基于梯度,需去噪) | |
| cv::fitEllipse | 椭圆拟合(轮廓/点集的椭圆检测) | |
| 辅助算子 | cv::cornerSubPix | 角点亚像素精修(提升特征定位精度) |
| cv::Scharr/Sobel | 梯度计算(边缘检测预处理) | |
| cv::Laplacian | 拉普拉斯滤波(边缘增强/斑点检测) | |
| cv::createLineSegmentDetector | LSD直线检测(快速鲁棒,替代霍夫) | |
| cv::preCornerDetect | 角点特征图计算(角点检测预处理) |
四、目标检测(基础/传统)
核心场景:基于传统算法的目标检测,含模板匹配、形状检测、霍夫检测,适合刚性目标/简单场景
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::matchTemplate | 模板匹配(刚性目标检测,多尺度适配) |
| cv::HoughLinesP/HoughCircles | 形状检测(直线/圆形目标检测) | |
| cv::findContours | 轮廓检测(二值图像的目标轮廓提取) | |
| cv::approxPolyDP | 多边形近似(轮廓形状检测:矩形/三角形) | |
| 辅助算子 | cv::boundingRect/minAreaRect | 目标包围框(轴对齐/旋转矩形,定位目标) |
| cv::matchShapes | 形状匹配(基于胡不变矩,旋转缩放不变) | |
| cv::inRange | 色彩阈值分割(HSV下的色彩目标检测) | |
| cv::calcBackProject | 直方图反向投影(色彩目标检测) |
五、图像分割
核心场景:将图像划分为前景(目标)和背景,或多个目标区域,含交互式/全自动/基于形状的分割
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::grabCut | 图割分割(交互式,前景精准提取) |
| cv::watershed | 分水岭分割(基于标记,重叠/紧密目标分割) | |
| cv::connectedComponentsWithStats | 连通域分析(二值图像,目标分割+统计) | |
| cv::threshold/inRange | 阈值/色彩分割(简单场景,基础分割) | |
| 辅助算子 | cv::distanceTransform | 距离变换(前景细化/骨架提取) |
| cv::floodFill | 漫水填充(种子点分割,孔洞填充) | |
| cv::morphologyEx | 形态学优化(分割后去噪/填充孔洞) | |
| cv::findContours | 轮廓提取(分割后目标轮廓获取) |
六、几何变换与图像矫正
核心场景:图像缩放/旋转/仿射/透视/极坐标变换,畸变校正/透视矫正/图像配准
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::resize | 图像缩放(按尺寸/比例,最常用) |
| cv::warpAffine | 仿射变换(平移/旋转/缩放/剪切) | |
| cv::warpPerspective | 透视变换(透视矫正,四边形转矩形) | |
| cv::remap | 通用重映射(畸变校正/立体校正) | |
| cv::warpPolar | 极坐标变换(圆形目标展开,如表盘/硬币) | |
| cv::getPerspectiveTransform | 透视矩阵计算(4对对应点) | |
| cv::getAffineTransform | 仿射矩阵计算(3对对应点) | |
| 辅助算子 | cv::getRotationMatrix2D | 旋转矩阵计算(绕指定点旋转) |
| cv::initUndistortRectifyMap | 生成校正映射表(配合remap,批量矫正) | |
| cv::convertMaps | 映射表格式转换(提升remap速度) | |
| cv::getRectSubPix | 亚像素矩形提取(精准ROI截取) | |
| cv::pyrDown/pyrUp | 金字塔下/上采样(多尺度变换) |
七、轮廓分析与形状描述
核心场景:二值图像轮廓的提取、分析与形状特征描述,目标识别/分类/特征提取
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::findContours | 轮廓检测(提取二值图像的目标轮廓) |
| cv::contourArea | 轮廓面积计算 | |
| cv::arcLength | 轮廓周长(弧长)计算 | |
| cv::approxPolyDP | 轮廓多边形近似(形状简化/检测) | |
| cv::convexHull | 凸包计算(凸性分析/形状简化) | |
| cv::moments/HuMoments | 矩/胡不变矩计算(形状描述,旋转缩放不变) | |
| cv::minAreaRect/minEnclosingCircle | 最小包围矩形/圆(形状特征) | |
| 辅助算子 | cv::isContourConvex | 轮廓凸性检测 |
| cv::convexityDefects | 凸缺陷检测(凹形目标分析,如手势) | |
| cv::pointPolygonTest | 点-in-轮廓测试(点归属判断) | |
| cv::matchShapes | 形状匹配(轮廓相似度比较) | |
| cv::boxPoints | 旋转矩形顶点计算(绘制/矫正) |
八、视频分析与运动跟踪
核心场景:视频流/图像序列的运动分析、背景建模、帧间匹配、目标跟踪基础
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::accumulateWeighted | 加权累加(移动平均,背景建模核心) |
| cv::phaseCorrelate | 相位相关法(帧间平移检测,亚像素) | |
| cv::calcOpticalFlowPyrLK | LK光流(特征点跟踪,帧间运动估计) | |
| cv::createBackgroundSubtractorMOG2 | MOG2背景减除(动态背景建模) | |
| 辅助算子 | cv::accumulate/accumulateSquare | 像素累加/平方累加(运动能量计算) |
| cv::goodFeaturesToTrack | 特征点提取(光流跟踪的特征点初始化) | |
| cv::cvtColor | 色彩转灰度(视频处理降维提速) | |
| cv::GaussianBlur | 高斯去噪(视频帧去噪,提升跟踪精度) | |
| cv::createHanningWindow | 汉宁窗生成(phaseCorrelate预处理,减频谱泄漏) |
九、图像可视化与结果标注
核心场景:特征/检测/分割/标定结果的可视化,图像标注/绘图,调试与结果展示
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::drawContours | 轮廓绘制(填充/空心,分割/检测结果) |
| cv::rectangle/circle | 矩形/圆形绘制(目标检测框/特征点标注) | |
| cv::line/arrowedLine | 直线/箭头绘制(坐标系/光流/轨迹) | |
| cv::putText | 文本标注(检测分数/坐标/信息) | |
| cv::drawMarker | 标记点绘制(特征点/兴趣点标注) | |
| 辅助算子 | cv::applyColorMap | 伪彩色映射(灰度图→热力图,可视化增强) |
| cv::ellipse/polylines | 椭圆/多边形绘制(形状目标标注) | |
| cv::fillPoly/fillConvexPoly | 多边形填充(掩码/目标区域绘制) | |
| cv::clipLine | 线条裁剪(避免绘制超出图像) | |
| cv::getTextSize | 文本尺寸计算(文本对齐/自适应) |
十、直方图分析与色彩处理
核心场景:图像直方图计算/匹配/增强,色彩特征提取,图像相似度分析
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::calcHist | 直方图计算(灰度/色彩/多维直方图) |
| cv::compareHist | 直方图比较(图像相似度/色彩匹配) | |
| cv::equalizeHist/CLAHE | 直方图均衡化(对比度增强) | |
| cv::calcBackProject | 直方图反向投影(色彩目标检测/分割) | |
| 辅助算子 | cv::applyColorMap | 伪彩色映射(直方图/灰度图可视化) |
| cv::EMD | 地球移动距离(非均匀直方图比较) | |
| cv::cvtColor | 色彩空间转换(HSV/Lab,直方图分析前预处理) |
十一、双目视觉与3D重建
核心场景:双目图像校正、视差图计算、3D点云生成,双目测距/3D重建
| 类型 | 算子 | 极简功能说明 |
|---|---|---|
| 核心算子 | cv::stereoCalibrate | 双目立体标定(获取内外参/极线约束) |
| cv::stereoRectify | 双目校正矩阵计算(极线对齐) | |
| cv::StereoSGBM::create | SGBM立体匹配(视差图计算,最常用) | |
| cv::reprojectImageTo3D | 视差图转3D点云(双目3D重建) | |
| cv::triangulatePoints | 三角化(双目特征点的3D坐标计算) | |
| 辅助算子 | cv::initUndistortRectifyMap | 生成双目校正映射表 |
| cv::remap | 双目图像校正(极线对齐) | |
| cv::filterSpeckles | 视差图滤波(去噪,提升点云质量) | |
| cv::computeCorrespondEpilines | 极线计算(双目匹配验证) | |
| cv::recoverPose | 从本质矩阵恢复相机位姿 |
十二、通用工具类(全场景适配)
核心场景:全开发流程中的通用操作,如图像读写、矩阵计算、像素统计、掩码操作
| 类型 | 算子/函数 | 极简功能说明 |
|---|---|---|
| 核心工具 | cv::imread/imwrite/imshow | 图像读写/显示(基础IO) |
| cv::Mat | 图像/矩阵容器(核心数据结构) | |
| cv::minMaxLoc | 极值查找(模板匹配/特征响应图) | |
| cv::normalize | 归一化(像素值/特征值缩放) | |
| cv::integral | 积分图计算(快速区域统计) | |
| cv::getStructuringElement | 结构元素生成(形态学操作基础) | |
| 辅助工具 | cv::bitwise_and/or/not | 位运算(掩码操作/图像融合) |
| cv::addWeighted | 图像融合(线性加权,无缝拼接) | |
| cv::blendLinear | 像素级融合(权重图融合) | |
| cv::Rodrigues | 旋转向量/矩阵互转(位姿计算) | |
| cv::composeRT | 位姿组合(旋转+平移融合) |
手册使用说明
- 场景优先:开发时先定位核心场景,再从【核心算子】中选择主算子,【辅助算子】做配套优化;
- 极简关联:算子后仅附核心功能,详细参数/用法可结合之前的算子详解文档查阅;
- 高频聚焦:剔除冷门算子,仅保留实际开发中99%的高频算子,避免冗余;
- 跨场景复用:部分算子(如
cv::morphologyEx/cv::findContours)为跨场景通用算子,在对应核心场景中重点标注。