做网站合肥哪家公司好做水浒传有关的网站
2026/4/15 10:52:44 网站建设 项目流程
做网站合肥哪家公司好,做水浒传有关的网站,营销型网站四大元素,网站建设目前流行什么一、轮廓检测轮廓定义#xff1a;图像中具有相同颜色 / 灰度的连续像素点连接形成的闭合曲线#xff0c;代表前景与背景的边界#xff0c;与边缘#xff08;单像素灰度突变#xff09;不同#xff0c;轮廓更强调整体外形与连通性。cv2.findContours 是 OpenCV 用于从二值…一、轮廓检测轮廓定义图像中具有相同颜色 / 灰度的连续像素点连接形成的闭合曲线代表前景与背景的边界与边缘单像素灰度突变不同轮廓更强调整体外形与连通性。cv2.findContours是 OpenCV 用于从二值图像中提取轮廓的函数其核心作用是扫描二值图像的像素追踪连续的边界点并组织成轮廓集合同时可返回轮廓间的层级关系如嵌套、并列cv2.findContours(image, mode, method)参数image必须是单通道二值图前景白色 255背景黑色 0若输入彩色 / 灰度图需先二值化mode轮廓检索模式1.cv2.RETR_EXTERNAL只提取最外层轮廓忽略嵌套轮廓适合只关注主体的场景如检测单个物体2.cv2.RETR_LIST提取所有轮廓不建立层级关系最简洁3.cv2.RETR_CCOMP提取所有轮廓建立两层层级外层 内层4.cv2.RETR_TREE提取所有轮廓建立完整层级树最常用可区分嵌套 / 并列轮廓method轮廓逼近方法1.cv2.CHAIN_APPROX_NONE保留所有轮廓点每个点都存储数据量大2.cv2.CHAIN_APPROX_SIMPLE压缩水平 / 垂直 / 对角线方向的冗余点如矩形只存 4 个顶点最常用代码phonecv2.imread(phone.png)#读取原图 phone_graycv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)#灰度图的处理 cv2.imshow(phone_b,phone_gray) cv2.waitKey(0) #phone_graycv2.imread(phone.png,b#读取灰度图 ret,phone_binary cv2.threshold(phone_gray,120,255,cv2.THRESH_BINARY)#阀值处理为二值 cv2.imshow(phone_binary,phone_binary) cv2.waitKey(0) # _,contours,hierarchy cv2.findContours(phone_binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) contours cv2.findContours(phone_binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)[-2] # 通用 # print(hierarchy) print(len(contours))1.通过cv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)将图像变成灰度图2.通过cv2.threshold将灰度值大于 120 的像素设为 255白色前景小于等于 120 的像素设为 0黑色背景最终得到一张黑白二值图。3.最后用cv2.findContours对二值图像phone_binary提取所有轮廓含层级、保留所有轮廓点最终只取返回结果中的[轮廓列表]二、轮廓绘制函数cv2.drawContours(image contourscontourIdxcolor thicknessNoneLineTypeNone,hierarchyNone,maxLevelNoneoffsetNone)参数含义如下image要在其上绘制轮廊的输入图像。contours:轮廊列表通常由cv2.findContours(函数返回。contourIdx:要绘制的轮序的索引。如果为负数则绘制所有轮廓。-1color:轮廓的颜色以BGR格式表示。例如02550表示绿色。thickness:轮廓线的粗细。默认值为1。lineType:轮廊线的类型。默认值为cv2.LINE_8。hierarchy:轮廓层次结构。通常由cv2.findContours(函数返回。maxLevel:绘制的最大轮廊层级。默认值为None表示绘制所有层级。offset:轮廓点的偏移量。默认值为None。代码image_copy phone.copy() cv2.drawContours(imageimage_copy,contourscontours,contourIdx6,color(255,255,0),thickness3) cv2.imshow(Contours_show,image_copy) cv2.waitKey(0)通过drawContours方法在图像的复制本上绘制轮廓用上面轮廓检测得到的contours轮廓列表得到的图像三、轮廓特征1.轮廓面积cv2.contourArea()用于计算单个轮廓所包围的像素面积面积值反映了轮廓对应的物体大小是筛选有效轮廓、分析形状的基础。area cv2.contourArea(contour, orientedFalse)contour顶点构成的二维向量组如轮廓列表contours中的一个轮廓oriented默认为False返回绝对值面积2.轮廓周长cv2.arcLength()用于计算轮廓的弧长 / 周长对于闭合轮廓返回周长对于非闭合轮廓返回弧长是判断轮廓形状、计算圆形度等特征的关键参数。length cv2.arcLength(contour, closed)contour单个轮廓来自cv2.findContours返回的contours列表元素closedTrue认为轮廓是闭合的首尾相连计算完整周长False认为轮廓是开放的首尾不连计算从起点到终点的弧长3.轮廓外接圆cv2.minEnclosingCircle()用于计算单个轮廓的最小外接圆能完全包围轮廓的最小圆形返回圆心坐标和半径。(x_center, y_center), radius cv2.minEnclosingCircle(contour)contour单个轮廓来自cv2.findContours返回的contours列表元素(x_center, y_center)最小外接圆的圆心坐标radius最小外接圆的半径4.轮廓外接矩形x,y,w,hcv2.boundingRect(cnt)计算轮廓的最小外接矩形xy是轮廓的最小外接矩形的左上角wh是矩形的宽和高四、轮廓近似approx cv2.approxPolyDP(curveepsilonclosed)参数说明curve输入轮廓。epsilon近似精度即两个轮廓之间最大的欧式距离。该参数越小得到的近似结果越接近实际轮廓反之得到的近似结果会更加粗略。closed布尔类型的参数表示是否封闭轮廓。如果是True表示输入轮廓是封闭的近似结果也会是封闭的否则表示输入轮廓不是封闭的返回值approx近似结果是一个ndarray数组为1个近似后的轮廓包含了被近似出来的轮廓上的点的坐标代码phone cv2.imread(phone.png) phone_graycv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)#转换为灰度图 ret,phone_threshcv2.threshold(phone_gray,120,255,cv2.THRESH_BINARY) #二值化 #imagecontourshierarchycv2.findContours(phone_threshcv2.RETR_TREEcv2.CHAIN_APPRox_NoNE)#获取轮廓 contourscv2.findContours(phone_thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)[-2] epsilon 0.01 * cv2.arcLength(contours[0],True) #设置近似精度.[h要eε越小点越多越精确】 approxcv2.approxPolyDP(contours[0],epsilon,True)#对轮廓进行近似 print(contours[1].shape) print(approx.shape) phone_new phone.copy() image_contourscv2.drawContours(phone_new,[approx],contourIdx-1,color(0,255,0),thickness3)#绘制轮廓 cv2.imshow(phone,phone) cv2.waitKey(0) cv2.imshow(image_contours,image_contours) cv2.waitKey(0)得到的图像

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询