版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目十:轮廓检测识别物体的边界与形状COMPUTERVISION·计算机视觉系列课程任务导入:智能工厂的零件质检01/案例背景在“智造未来”智能工厂,每天都会生产数以万计的精密机械零件。传统的人工质检方式不仅效率低下,还容易因为视觉疲劳或疏忽出现错检、漏检,无法满足大规模生产的需求。02/面临挑战面对海量的零件,我们需要快速且准确地回答两个核心问题:
1.完整性:零件表面是否存在肉眼难以察觉的微小破损或缺口?
2.精准度:关键部位的尺寸是否完全符合生产图纸的标准?03/引入问题:轮廓检测想要解决上述挑战,我们可以利用计算机视觉中的“轮廓检测”技术。通过算法识别图像中零件的边界,精确计算其形状、面积、周长及尺寸数据,就能实现自动化、高精度、高效率的质量检测!本项目学习目标知识目标Knowledge•理解轮廓概念:掌握轮廓的定义,理解轮廓与边缘的区别与联系。•掌握检索原理:了解OpenCV中轮廓检索模式和逼近方法的含义及适用场景。•熟悉核心函数:掌握`cv2.findContours()`和`cv2.drawContours()`的参数含义与用法。•了解轮廓特征:掌握计算轮廓面积、周长等基本特征的方法。•认识凸包与多边形:理解凸包概念及如何用多边形逼近轮廓。能力目标Skills•图像预处理能力:
能够运用阈值处理、边缘检测等技术,为轮廓检测准备高质量的二值化图像。•轮廓检测与绘制:
能够独立编写Python代码,成功识别图像中的轮廓并进行可视化绘制。•高级轮廓处理:
能够实现查找轮廓凸包,并使用多边形逼近的方法处理复杂轮廓。素质目标Competence•培养严谨的逻辑思维:
通过深入分析不同轮廓检索模式和逼近算法的逻辑差异,锻炼细致、严谨的工程思维能力。•提升代码调试能力:
在代码编写和调试过程中,培养快速发现问题、精准定位原因并有效解决Bug的综合能力。任务10.1:轮廓的查找与绘制什么是轮廓(Contour)?📝定义:由一系列相连的点构成的闭合曲线,代表物体的整体边界与形状。⚖️轮廓vs边缘:•边缘(Edge):像素值突变的孤立点,离散且不连续。•轮廓(Contour):边缘点经过连接与组织后的整体集合。OpenCV核心函数cv2.findContours()在二值图像中检索轮廓坐标cv2.drawContours()将轮廓绘制在目标图像上💡轮廓检测前提轮廓查找函数的输入必须是一张二值图像(BinaryImage)。通常在查找轮廓前,我们会先对原图进行阈值处理(Threshold)或Canny边缘检测,以得到清晰的黑白边界。轮廓查找与绘制代码实现01图像读取与预处理读取图像后,先将彩色图像转换为灰度图,再使用阈值法进行二值化,为轮廓检测做好准备。02查找轮廓调用OpenCV的cv2.findContours()函数,从二值图像中检测出所有物体的轮廓信息,并返回轮廓列表。03绘制轮廓使用cv2.drawContours()函数,将检测到的轮廓在原图或副本上绘制出来,以便直观地观察结果。#1.读取图像并预处理(灰度化与二值化)
src_img=cv2.imread('shapes.png')
gray=cv2.cvtColor(src_img,cv2.COLOR_BGR2GRAY)
_,binary=cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
#2.查找轮廓(RETR_EXTERNAL:只找最外层)
contours,_=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
print(f"检测到的轮廓数量:{len(contours)}")
#3.在原图上绘制所有轮廓(绿色,线宽2)
cv2.drawContours(src_img,contours,-1,(0,255,0),2)
#显示结果
cv2.imshow('ContourDetection',src_img)
cv2.waitKey(0)任务10.2:凸包的查找与绘制什么是凸包(ConvexHull)?定义:在计算几何中,凸包是能够完全包含给定平面点集所有点的最小凸多边形。它保留了点集的“凸”几何特征,去除了内部细节。💡形象理解:想象用一根紧绷的橡皮筋,从外部完全“包裹”住桌面上随意散落的所有棋子。松开手后,橡皮筋自然收缩形成的多边形轮廓,就是这些棋子的凸包。cv2.convexHull(points[,hull])OpenCV核心函数:查找轮廓的凸包点集▲原始轮廓(红色)与计算出的凸包(绿色)效果对比凸包极大地简化了物体的形状描述凸包查找与绘制代码实现Python+OpenCV核心实现代码#1.读取图像并二值化处理,突出前景轮廓
importcv2;importnumpyasnp
img=cv2.imread('hand.png');res=img.copy()
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
_,binary=cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)#2.检测外部轮廓,并绘制原始轮廓(红色)
contours,_=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
ifcontours:cnt=contours[0];cv2.drawContours(res,[cnt],0,(0,0,255),2)#3.计算并绘制凸包(绿色),形成“包裹”效果
hull=cv2.convexHull(cnt)#核心算法调用,获取凸包点集
cv2.drawContours(res,[hull],0,(0,255,0),3);cv2.imshow("Result:HullvsContour",res)cv2.waitKey(0);cv2.destroyAllWindows()任务10.3:查找与绘制多边形什么是多边形逼近?定义:也称为“轮廓逼近”,是在保证形状特征不变的前提下,使用顶点数量更少的多边形,去近似地表示一个复杂的原始轮廓。应用:在形状匹配、几何特征提取和模式识别中非常实用,能有效降低数据处理的复杂度。cv2.approxPolyDP(curve,epsilon,closed)关键参数epsilon:逼近精度阈值,代表原始轮廓与逼近多边形之间的最大允许距离。值越小,逼近结果越接近原轮廓。多边形逼近代码实现#导入必要库importcv2importnumpyasnp#1.读取图像并二值化预处理src=cv2.imread('star.png');res=src.copy()gray=cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)_,binary=cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)#2.查找轮廓与绘制(绿色)contours,_=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)ifcontours:#确保检测到了轮廓cnt=contours[0];cv2.drawContours(res,[cnt],0,(0,255,0),2)#3.计算周长与执行多边形逼近(红色)peri=cv2.arcLength(cnt,True)#计算轮廓周长(True代表闭合)epsilon=0.01peri;approx=cv2.approxPolyDP(cnt,epsilon,True)cv2.drawContours(res,[approx],0,(0,0,255),2)cv2.imshow('ApproximatedPolygon',res);cv2.waitKey(0);cv2.destroyAllWindows()项目小结:轮廓检测技术核心概念轮廓:物体边界的完整描述,是进行形状分析、物体识别的几何基础。轮廓与边缘:轮廓不是孤立的边缘点,而是连续的、按拓扑结构组织化的边缘整体。核心技能🔍轮廓查找与绘制:
熟练掌握OpenCV中cv2.findContours()与cv2.drawContours()的参数配置与使用。📐关键轮廓分析:
•凸包:使用cv2.convexHull()获取物体的凸包,概括物体整体形状。
•多边形逼近:使用cv2.approxPolyDP()对轮廓进行多边形拟合,实现形状简化与识别。应用价值轮廓检测技术是连接“底层图像处理”与“高层语义理解”的关键桥梁。它是实现物体识别、工业尺寸测量、手势识别、文档扫描与OCR预处理等众多计算机视觉任务不可或缺的基石。习题与拓展01选择题Q1:在OpenCV中,哪个轮廓检索模式只检测最外层的轮廓?
A.cv2.RETR_LIST|B.cv2.RETR_EXTERNAL|C.cv2.RETR_TREEQ2:函数cv2.approxPolyDP()中的参数epsilon表示什么含义?它的值与逼近多边形的关系?
提示:epsilon越小,逼近的多边形越____________原始轮廓。02简答题简述“轮廓”与“边缘”的区别?提示思考方向:
1.定义角度:两者分别在图像处理的什么阶段产生?
2.特征角度:轮廓是边缘吗?它们在连通性上有什么不同?
3.用途角度:它们通常用于解决什么不同类型的问题?03拓
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年教育法规知识培训试卷及解析
- 2026年小学语文教学冲刺押题试卷及解析
- 抢救仪器设备管理
- 2026年小学社会培训试卷及解析
- 自考学前教育案例分析(配套答案)
- 信息处理技术员历年真题(无水印高清)
- 信息系统项目管理师(高级)模拟试题(核心考点)
- 花式考试题目及答案
- 2026年中职(机械制造与自动化)机械零件加工工艺阶段测试题及答案
- 医生护士专用医疗模板
- 妇科病中医针灸疗效分析
- 2026年医用气体管道系统安装工程分包合同
- 学校落实“学校吹哨、部门报到”机制实施方案
- 极端环境下植物功能多样性对生态系统韧性贡献机制
- 隔音涂料施工方案范本
- 《先进先出管理办法》
- 2025浙江宁波市粮食收储有限公司招聘2人笔试历年参考题库附带答案详解
- DG-TJ08-2134-2024 建筑装饰工程石材应用技术标准
- 家庭教育普法讲解
- 英语四级考试大纲词汇【全本】
- 社会科学研究课题结题报告模板及范文
评论
0/150
提交评论