行业资讯
📅 2026/8/5 10:09:49
OpenCV实战篇
1.轮廓查找 findContourscontours, hierarchy cv2.findContours(image, mode, method)返回值contours列表存储所有轮廓每一个轮廓是一组坐标点数组(N,1,2)代表一条闭合曲线。hierarchy层级数组记录轮廓父子嵌套关系仅层级模式需要。参数image必须是二值图0 黑255 白白色为前景轮廓 推荐前置灰度→二值化 / Canny 边缘图。mode 轮廓检索模式表格模式抓取范围层级结构常用场景RETR_EXTERNAL仅最外层轮廓无层级物体检测、计数、框选首选RETR_LIST所有轮廓无层级单纯统计轮廓总数RETR_CCOMP外层 紧邻孔洞仅限 2 层区分物体与内部孔洞RETR_TREE全部轮廓完整树形多层嵌套复杂多层镂空图形分析method 轮廓逼近方式表格常量作用特点cv2.CHAIN_APPROX_NONE存储轮廓所有像素点点极多占用内存大cv2.CHAIN_APPROX_SIMPLE压缩拐点只存顶点只保留拐角坐标大幅精简日常首选2.轮廓绘制cv2.drawContours(image, contours, contourIdx, color, thickness, lineTypeNone, hierarchyNone, maxLevelNone, offsetNone)核心常用参数image绘制画布建议传入原图副本不要直接修改原图格式BGR 彩色图。contoursfindContours得到的轮廓列表。contourIdx填数字绘制第 N 个轮廓填-1一次性绘制全部轮廓。colorBGR 格式颜色元组 红色(0,0,255)、绿色(0,255,0)、蓝色(255,0,0)、白色(255,255,255)、黑色(0,0,0)。thickness正数轮廓线条粗细-1把轮廓围成的区域内部全部填充。3.轮廓的面积与周长一、轮廓面积cv2.contourArea(contour)作用计算单个闭合轮廓包围区域的像素面积。参数contour单条轮廓contours列表里其中一个元素二、轮廓周长cv2.arcLength(contour, closed)作用计算轮廓边线的像素长度。参数contour单条轮廓closed布尔值True闭合轮廓首尾相连日常绝大多数场景用 TrueFalse开放曲线不闭合。4.多边形逼近与凸包approx cv2.approxPolyDP(curve, epsilon, closed)参数curve单条原始轮廓cntepsilon逼近精度最重要参数含义原始轮廓与拟合多边形最大允许距离 常用写法epsilon 0.02 * cv2.arcLength(cnt, True)epsilon 越大顶点越少、图形越粗糙越小越贴近原图。closedTrue闭合多边形False开放折线hull cv2.convexHull(points, clockwiseFalse, returnPointsTrue)参数points轮廓点集合单条轮廓 cntreturnPoints默认 True返回凸包顶点坐标False 返回点索引5.外接矩阵函数形状能否旋转紧凑程度适用场景boundingRect正矩形不可旋转松散常规框选、快速定位minAreaRect斜矩形可旋转最紧凑倾斜物体定位minEnclosingCircle圆形无旋转适中圆形目标检测rect cv2.minAreaRect(contour)返回值rect ((cx, cy), (w, h), angle)(cx,cy)矩形中心点坐标(w,h)矩形宽、高angle旋转倾斜角度1.轮廓查找 findContourscontours, hierarchy cv2.findContours(image, mode, method)返回值contours列表存储所有轮廓每一个轮廓是一组坐标点数组(N,1,2)代表一条闭合曲线。hierarchy层级数组记录轮廓父子嵌套关系仅层级模式需要。参数image必须是二值图0 黑255 白白色为前景轮廓 推荐前置灰度→二值化 / Canny 边缘图。mode 轮廓检索模式表格模式抓取范围层级结构常用场景RETR_EXTERNAL仅最外层轮廓无层级物体检测、计数、框选首选RETR_LIST所有轮廓无层级单纯统计轮廓总数RETR_CCOMP外层 紧邻孔洞仅限 2 层区分物体与内部孔洞RETR_TREE全部轮廓完整树形多层嵌套复杂多层镂空图形分析method 轮廓逼近方式表格常量作用特点cv2.CHAIN_APPROX_NONE存储轮廓所有像素点点极多占用内存大cv2.CHAIN_APPROX_SIMPLE压缩拐点只存顶点只保留拐角坐标大幅精简日常首选2.轮廓绘制cv2.drawContours(image, contours, contourIdx, color, thickness, lineTypeNone, hierarchyNone, maxLevelNone, offsetNone)核心常用参数image绘制画布建议传入原图副本不要直接修改原图格式BGR 彩色图。contoursfindContours得到的轮廓列表。contourIdx填数字绘制第 N 个轮廓填-1一次性绘制全部轮廓。colorBGR 格式颜色元组 红色(0,0,255)、绿色(0,255,0)、蓝色(255,0,0)、白色(255,255,255)、黑色(0,0,0)。thickness正数轮廓线条粗细-1把轮廓围成的区域内部全部填充。3.轮廓的面积与周长一、轮廓面积cv2.contourArea(contour)作用计算单个闭合轮廓包围区域的像素面积。参数contour单条轮廓contours列表里其中一个元素二、轮廓周长cv2.arcLength(contour, closed)作用计算轮廓边线的像素长度。参数contour单条轮廓closed布尔值True闭合轮廓首尾相连日常绝大多数场景用 TrueFalse开放曲线不闭合。4.多边形逼近与凸包approx cv2.approxPolyDP(curve, epsilon, closed)参数curve单条原始轮廓cntepsilon逼近精度最重要参数含义原始轮廓与拟合多边形最大允许距离 常用写法epsilon 0.02 * cv2.arcLength(cnt, True)epsilon 越大顶点越少、图形越粗糙越小越贴近原图。closedTrue闭合多边形False开放折线hull cv2.convexHull(points, clockwiseFalse, returnPointsTrue)参数points轮廓点集合单条轮廓 cntreturnPoints默认 True返回凸包顶点坐标False 返回点索引5.外接矩阵函数形状能否旋转紧凑程度适用场景boundingRect正矩形不可旋转松散常规框选、快速定位minAreaRect斜矩形可旋转最紧凑倾斜物体定位minEnclosingCircle圆形无旋转适中圆形目标检测rect cv2.minAreaRect(contour)返回值rect ((cx, cy), (w, h), angle)(cx,cy)矩形中心点坐标(w,h)矩形宽、高angle旋转倾斜角度x, y, w, h cv2.boundingRect(contour)参数与返回值入参单条轮廓cnt返回x,y矩形左上角坐标w矩形宽度h矩形高度x, y, w, h cv2.boundingRect(contour)参数与返回值入参单条轮廓cnt返回x,y矩形左上角坐标w矩形宽度h矩形高度