以下是OpenCV中最常用的100个函数及其作用与注意事项的全面整理,按功能模块分类,结合官方文档与工业实践优化排序。各函数均标注Python(cv2)和C++(cv::)命名,重点参数以加粗突出:


📷 ​一、图像输入/输出(8个)​

函数名​ (Python/C++)作用注意事项
cv2.imread/cv::imread读取图像文件参数flagscv2.IMREAD_GRAYSCALE(灰度)、cv2.IMREAD_COLOR(彩色)
cv2.imshow/cv::imshow显示图像窗口需搭配cv2.waitKey()使用,否则窗口瞬间关闭
cv2.imwrite/cv::imwrite保存图像到文件参数params控制格式:如cv2.IMWRITE_JPEG_QUALITY设置JPEG质量(0-100)
cv2.waitKey/cv::waitKey等待键盘输入参数delay=0表示无限等待,返回按键ASCII值
cv2.destroyAllWindows/cv::destroyAllWindows关闭所有窗口需在程序结束前调用,避免内存泄漏
cv2.VideoCapture/cv::VideoCapture打开摄像头/视频文件.isOpened()检查是否成功打开,.read()逐帧读取
cv2.VideoWriter/cv::VideoWriter保存视频文件需指定编码器(如cv2.VideoWriter_fourcc('M','J','P','G'))和帧率
cv2.namedWindow/cv::namedWindow创建可调整的窗口支持cv2.WINDOW_NORMAL实现窗口大小调整

🎨 ​二、图像处理与变换(25个)​

函数名​ (Python/C++)作用注意事项
cv2.cvtColor/cv::cvtColor颜色空间转换常用:cv2.COLOR_BGR2GRAY(BGR→灰度)、cv2.COLOR_BGR2HSV
cv2.resize/cv::resize调整图像尺寸插值方法:cv2.INTER_LINEAR(平衡速度质量)、cv2.INTER_NEAREST(最快)
cv2.flip/cv::flip图像翻转参数flipCode=0垂直翻转,=1水平翻转
cv2.rotate/cv::rotate旋转图像(90°倍数)实际由cv2.getRotationMatrix2D+warpAffine实现
cv2.warpAffine/cv::warpAffine仿射变换(平移/旋转/缩放)需先计算变换矩阵(cv2.getRotationMatrix2D
cv2.warpPerspective/cv::warpPerspective透视变换(矫正倾斜)需用cv2.getPerspectiveTransform计算变换矩阵
cv2.threshold/cv::threshold固定阈值二值化参数thresh=127(阈值)、maxval=255(最大值)
cv2.adaptiveThreshold/cv::adaptiveThreshold自适应阈值二值化适合光照不均图像,常用cv2.ADAPTIVE_THRESH_GAUSSIAN_C
cv2.GaussianBlur/cv::GaussianBlur高斯模糊降噪核尺寸需为奇数(如(5,5)),sigmaX控制平滑强度
cv2.medianBlur/cv::medianBlur中值滤波(去除椒盐噪声)核尺寸为奇数(如5
cv2.bilateralFilter/cv::bilateralFilter双边滤波(保边降噪)参数d(邻域直径)、sigmaColor(颜色空间标准差)
cv2.erode/cv::erode形态学腐蚀(消除小物体)需定义结构元素(如cv2.getStructuringElement
cv2.dilate/cv::dilate形态学膨胀(填充空洞)同上,常与腐蚀组合使用
cv2.morphologyEx/cv::morphologyEx高级形态学操作支持开运算(cv2.MORPH_OPEN)、闭运算(cv2.MORPH_CLOSE
cv2.pyrUp/cv::pyrUp图像放大(高斯金字塔上采样)尺寸变为2倍,模糊度增加
cv2.pyrDown/cv::pyrDown图像缩小(高斯金字塔下采样)尺寸减半,抗混叠
cv2.filter2D/cv::filter2D自定义卷积核滤波需预先定义核(如锐化核[[-1,-1,-1],[-1,9,-1],[-1,-1,-1]]
cv2.sepFilter2D/cv::sepFilter2D可分离卷积(提升速度)将二维卷积拆分为两个一维卷积
cv2.inRange/cv::inRange按颜色范围提取区域常用于HSV空间(如提取绿色:lower=[35,50,50], upper=[85,255,255]
cv2.split/cv::split分离多通道图像(如BGR→B,G,R)返回单通道列表,需用cv2.merge合并
cv2.merge/cv::merge合并单通道为多通道图像输入为列表(如[b,g,r]→BGR图像)
cv2.addWeighted/cv::addWeighted图像加权融合(透明度混合)公式:dst = src1*alpha + src2*beta + gamma
cv2.bitwise_and/cv::bitwise_and按位与(提取ROI)常与掩码结合(如cv2.bitwise_and(img, img, mask=mask)
cv2.bitwise_or/cv::bitwise_or按位或(合并区域)用途较少,多用于二进制操作
cv2.bitwise_not/cv::bitwise_not按位取反(图像反色)反转所有像素值

🔍 ​三、特征检测与分析(22个)​

函数名​ (Python/C++)作用注意事项
cv2.Canny/cv::CannyCanny边缘检测参数threshold1=100, threshold2=200(滞后阈值)
cv2.Sobel/cv::SobelSobel算子边缘检测可指定方向(dx=1,dy=0检测垂直边缘)
cv2.Laplacian/cv::Laplacian拉普拉斯边缘检测对噪声敏感,需先模糊
cv2.findContours/cv::findContours查找图像轮廓返回轮廓列表和层级关系,模式cv2.RETR_EXTERNAL(仅外轮廓)
cv2.drawContours/cv::drawContours绘制轮廓参数contourIdx=-1绘制所有轮廓
cv2.contourArea/cv::contourArea计算轮廓面积输入单个轮廓点集
cv2.arcLength/cv::arcLength计算轮廓周长参数closed=True表示闭合轮廓
cv2.boundingRect/cv::boundingRect计算轮廓外接矩形返回(x,y,w,h)
cv2.minAreaRect/cv::minAreaRect计算最小外接旋转矩形返回中心点、尺寸、旋转角度
cv2.minEnclosingCircle/cv::minEnclosingCircle计算最小外接圆返回圆心和半径
cv2.HoughLines/cv::HoughLines霍夫变换检测直线返回极坐标参数(ρ,θ)
cv2.HoughLinesP/cv::HoughLinesP概率霍夫变换检测线段返回线段端点(x1,y1,x2,y2)
cv2.HoughCircles/cv::HoughCircles霍夫变换检测圆参数minDist(圆间最小距离)避免重复检测
cv2.matchTemplate/cv::matchTemplate模板匹配(目标搜索)方法cv2.TM_CCOEFF_NORMED(归一化互相关)效果最佳
cv2.calcHist/cv::calcHist计算图像直方图用于分析亮度分布或颜色分布
cv2.equalizeHist/cv::equalizeHist直方图均衡化(增强对比度)仅支持单通道灰度图
cv2.goodFeaturesToTrack/cv::goodFeaturesToTrackShi-Tomasi角点检测替代Harris角点,参数maxCorners控制角点数
cv2.cornerHarris/cv::cornerHarrisHarris角点检测需阈值处理输出响应矩阵
cv2.SIFT_create/cv::SIFT::createSIFT特征检测器(需额外安装)OpenCV 4.6+需编译时启用OPENCV_ENABLE_NONFREE
cv2.ORB_create/cv::ORB::createORB特征检测器(免费替代)速度快,适合实时系统
cv2.BFMatcher/cv::BFMatcher暴力特征匹配器参数normType=cv2.NORM_HAMMING(二进制描述符)
cv2.FLANNBasedMatcher/cv::FlannBasedMatcherFLANN近似匹配器(大数据集更快)需描述符为浮点类型

✏️ ​四、几何绘制与标注(15个)​

函数名​ (Python/C++)作用注意事项
cv2.line/cv::line绘制直线参数thickness控制线宽,-1表示填充
cv2.rectangle/cv::rectangle绘制矩形框pt1pt2为对角顶点
cv2.circle/cv::circle绘制圆形thickness=-1绘制实心圆
cv2.ellipse/cv::ellipse绘制椭圆/圆弧参数startAngle=0, endAngle=360绘制完整椭圆
cv2.putText/cv::putText添加文字标注字体可选cv2.FONT_HERSHEY_SIMPLEXfontScale控制大小
cv2.polylines/cv::polylines绘制多边形参数isClosed=True闭合多边形
cv2.fillPoly/cv::fillPoly填充多边形区域输入点集列表
cv2.arrowedLine/cv::arrowedLine绘制带箭头线段参数tipLength=0.1(箭头长度比例)
cv2.drawMarker/cv::drawMarker绘制标记点(十字/星形等)样式cv2.MARKER_CROSS(十字)
cv2.getTextSize/cv::getTextSize获取文本尺寸用于动态计算文本位置
cv2.clipLine/cv::clipLine裁剪线段至矩形区域内返回布尔值表示是否相交
cv2.ellipse2Poly/cv::ellipse2Poly将椭圆离散化为点集用于自定义绘制虚线椭圆
cv2.drawKeypoints/cv::drawKeypoints绘制特征点(如SIFT/ORB)参数flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS绘制方向与尺度
cv2.drawMatches/cv::drawMatches绘制特征匹配结果并排显示两图的匹配点对
cv2.add/cv::add图像像素加法(饱和运算)防止溢出:max(0, min(255, a+b))

⚙️ ​五、高级工具与工具函数(30个)​

函数名​ (Python/C++)作用注意事项
cv2.calibrateCamera/cv::calibrateCamera相机标定(计算内参/畸变系数)需多张棋盘格图片
cv2.findChessboardCorners/cv::findChessboardCorners检测棋盘格角点角点顺序需与patternSize一致
cv2.solvePnP/cv::solvePnP求解物体3D位姿(PnP问题)需已知3D-2D点对应关系
cv2.undistort/cv::undistort图像畸变校正依赖标定得到的相机矩阵和畸变系数
cv2.connectedComponents/cv::connectedComponents连通域分析返回标签图,背景=0
cv2.connectedComponentsWithStats/cv::connectedComponentsWithStats带统计信息的连通域分析返回各区域面积、质心等
cv2.integral/cv::integral计算积分图(快速区域求和)用于加速Haar特征计算
cv2.dct/cv::dct离散余弦变换(图像压缩)输入需为浮点型
cv2.idct/cv::idct离散余弦逆变换dct配套使用
cv2.dft/cv::dft离散傅里叶变换(频域分析)需用cv2.magnitude计算幅值谱
cv2.idft/cv::idft离散傅里叶逆变换恢复空域图像
cv2.magnitude/cv::magnitude计算复数矩阵幅值输入实部x和虚部ysqrt(x²+y²)
cv2.phase/cv::phase计算复数矩阵相位返回弧度制角度
cv2.normalize/cv::normalize矩阵归一化模式cv2.NORM_MINMAX缩放到[0,255]
cv2.minMaxLoc/cv::minMaxLoc查找矩阵极值及位置返回(min_val, max_val, min_loc, max_loc)
cv2.mean/cv::mean计算均值可搭配掩码使用
cv2.meanStdDev/cv::meanStdDev计算均值与标准差分析图像统计特征
cv2.countNonZero/cv::countNonZero统计非零像素数用于二值图前景计数
cv2.findHomography/cv::findHomography计算单应性矩阵(图像配准)需至少4组点对
cv2.warpPerspective/cv::warpPerspective应用单应性变换findHomography配合
cv2.getAffineTransform/cv::getAffineTransform计算仿射变换矩阵需3组点对
cv2.getPerspectiveTransform/cv::getPerspectiveTransform计算透视变换矩阵需4组点对
cv2.convertScaleAbs/cv::convertScaleAbs缩放并取绝对值(增强对比度)常用于Sobel结果可视化
cv2.log/cv::log自然对数运算用于频域滤波
cv2.exp/cv::exp自然指数运算log配套使用
cv2.patchNaNs/cv::patchNaNs替换NaN值为指定数处理无效浮点结果
cv2.copyMakeBorder/cv::copyMakeBorder图像边界填充模式cv2.BORDER_REFLECT(镜像填充)
cv2.vconcat/cv::vconcat垂直拼接图像所有图像宽度必须相同
cv2.hconcat/cv::hconcat水平拼接图像所有图像高度必须相同
cv2.merge/cv::merge合并通道(见图像处理模块)split互为逆操作

💎 ​使用建议

  1. 性能优化​:视频处理中避免循环内重复创建Mat对象(C++)或numpy数组(Python),预分配内存可提速30%以上。
  2. 参数调试​:边缘检测(如Canny)的阈值比例推荐low:high ≈ 1:21:3;形态学操作的结构元素尺寸通常取3×35×5
  3. 兼容性注意​:cv2.findContours返回参数在OpenCV 3.4+版本中为(contours, hierarchy),旧版可能多返回一个image
  4. 深度学习整合​:OpenCV DNN模块支持加载ONNX/TensorFlow/PyTorch模型(cv2.dnn.readNet),但预处理需手动对齐(如缩放、归一化)。

完整函数文档见:OpenCV 4.7.0 Docs,实战代码参考官方示例库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89680.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89680.shtml
英文地址,请注明出处:http://en.pswp.cn/web/89680.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】红黑树,详解其规则与插入操作

各位大佬好,我是落羽!一个坚持不断学习进步的大学生。 如果您觉得我的文章有所帮助,欢迎多多互三分享交流,一起学习进步! 也欢迎关注我的blog主页: 落羽的落羽 一、红黑树的概念与规则 红黑树是一种更加特殊的平衡二…

Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: Camera相机人脸识别系列专题分析之十七:人脸特征检测FFD算法之libhci_face_camera_api.so 296点位人脸识别检测流程详解 目录 一、背景 二、:FFD算法libhci_face_camera_api.s…

PostgreSQL 16 Administration Cookbook 读书笔记:第7章 Database Administration

编写一个要么完全成功要么完全失败的脚本 事务(transaction)可以实现all or nothing。不过这里指的是psql的-和--single-transaction选项。可以实现transaction wrapper: 此选项只能与一个或多个 -c 和/或 -f 选项组合使用。它会导致 psql 在…

DeepSeekMath:突破开源语言模型在数学推理中的极限

温馨提示: 本篇文章已同步至"AI专题精讲" DeepSeekMath:突破开源语言模型在数学推理中的极限 摘要 数学推理由于其复杂且结构化的特性,对语言模型构成了重大挑战。本文介绍了 DeepSeekMath 7B,该模型在 DeepSeek-Code…

实体类序列化报错:Caused by: java.lang.NoSuchMethodException: com.xx.PoJo$Item.<init>()

原实体类代码EqualsAndHashCode(callSuper true) Data public class Pojo extends BaseBean {private static final long serialVersionUID -4291335073882689552L;ApiModelProperty("")private Integer id;......private List<Item> list;AllArgsConstructo…

基于单片机病床呼叫系统/床位呼叫系统

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 该系统是以单片机STM32F103为核心的基于无线网络的医院病房呼叫系统&#xff0c;分为从机和主机两…

[黑马头条]-登录实现思路

需求分析在黑马头条项目中&#xff0c;登录有两种方式&#xff1a;一种是用户输入账号密码后登录&#xff0c;这种方式登陆后的权限很大&#xff0c;可以查看&#xff0c;也可以进行其他操作&#xff1b;另一种方式就是用户点击不登录&#xff0c;以游客的身份进入系统&#xf…

了解.NET Core状态管理:优化技巧与常见问题解决方案

前言 欢迎关注dotnet研习社&#xff0c;今天我们聊聊“ .NET Core 中的状态管理”。 在Web应用程序中&#xff0c;管理和维持状态是一个非常重要的主题&#xff0c;尤其是在无状态的环境中&#xff0c;如 HTTP 协议和 RESTful API。对于基于 .NET Core 构建的应用程序&#xff…

504网关超时可能是哪些原因导致?

在网络访问中&#xff0c;504 网关超时&#xff08;Gateway Timeout&#xff09;如同一个突然亮起的警示灯&#xff0c;打断用户的浏览或操作流程。这个 HTTP 状态码意味着服务器作为网关或代理时&#xff0c;未能在规定时间内收到上游服务器的响应。引发504错误的核心因素有哪…

ComfyUI 常见报错问题解决方案合集(持续更新ing)

前言&#xff1a; 本文汇总了 5 大高频问题 及其解决方案&#xff0c;涵盖&#xff1a; HuggingFace 认证修复&#xff08;Token 申请 手动下载指南&#xff09; ComfyUI 版本更新&#xff08;完整命令 依赖管理&#xff09; 自启动配置&#xff08;Conda 环境 权限修复&…

完美解决Linux服务器tomcat开机自启动问题

经过多次测试终于彻底解决tomcat开机自启动的问题了 PID3ps aux | grep /home/server/shichuan/ | grep java | awk {print $2} if [ -n "$PID3" ]; then 这个判断pid的方式还是可能出现启动失败的情况 # tail -n 1 /home/server/shichuan/logs/catalina.out |grep…

kotlin部分常用特性总结

<h3>Kotlin中类和对象初始化</h3><ul> <li>添加open关键字代表可以被继承</li> <li>Any 是所有类的父类,类似Object,包含 equals() hashCode() toString()方法</li> <li>constructor 关键字代表构造函数, constructor关键字可…

PHP 就业核心技能速查手册

# PHP 就业核心技能速查手册 > 高效聚焦市场所需&#xff0c;快速提升竞争力 --- ## 一、语法基础&#xff08;必会&#xff01;&#xff09; php // 1. 变量与数据类型 $price 19.99; // 浮点型 $isStock true; // 布尔型 // 2. 流程控制 foreach ($…

从混沌到秩序:数据科学的热力学第二定律破局——线性回归的熵减模型 × 最小二乘的能量最小化 × 梯度下降的负反馈控制系统,用物理定律重构智能算法的统一场论

目录 一、机器学习是什么&#xff1f; 1.1 什么是机器学习&#xff1f; 1.2 机器学习的三大类型 二、线性回归是什么&#xff1f; 2.1 通俗理解 2.2 数学表达 三、最小二乘法&#xff08;Least Squares Method&#xff09; 3.1 什么是损失函数&#xff1f; 3.2 什么是最小…

BI 数据可视化平台建设(3)—首页性能提升实践

作者&#xff1a; vivo 互联网大数据团队- Wang Lei 本文是vivo互联网大数据团队《BI 数据可视化平台建设》系列文章第3篇。 随着越来越多代码的堆积&#xff0c;平台的运行加载性能也在逐步下降&#xff0c;在不同程度上极大地影响了用户体验&#xff0c;从而导致用户流失。本…

基于Python的毕业设计选题管理系统设计与实现

基于Python的毕业设计选题管理系统设计与实现摘要本论文详细阐述了一个基于Python的毕业设计选题管理系统的设计与实现过程。该系统采用了Python的Tkinter库构建图形用户界面&#xff0c;使用SQLite数据库存储数据&#xff0c;实现了高校毕业设计选题过程中的教师出题、学生选题…

如何在HTML5页面中嵌入视频

在HTML5中嵌入视频主要使用<video>标签&#xff0c;这是一种简单且标准的方式。以下是详细步骤和示例&#xff1a; 基础实现 <!DOCTYPE html> <html> <head><title>视频嵌入示例</title> </head> <body><!-- 基础视频播放器…

java操作Excel两种方式EasyExcel 和POI

一、POI1.引入依赖<!-- 03 xls--> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version> </dependency><!-- 07 xlsx --> <dependency><groupId>org.a…

Openlayers 面试题及答案180道(141-160)

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 141. 如何在生产环境中优…

LangChain面试内容整理-知识点24:实战案例:智能助手 Agent 构建

本案例讲述如何用LangChain构建一个结合多个工具的智能助手 Agent。智能助手需要理解用户复杂请求,通过调用不同工具(如搜索、计算、查数据库等)执行多步推理,再给出答案。LangChain的Agent框架非常适合这种场景。 构建步骤: 确定需求和选择Agent类型:假设我们要一个能上…