当前位置: 首页 > news >正文

Opencv进阶篇---轮廓检测

图像轮廓
边缘检测:只要梯度发生变化,零散的点都算作边缘
轮廓检测:一个链接的整体
cv.findContours(image,mode,method)
mode:轮廓检测模式
cv.RETR_EXTERNAL:只检测最外面的轮廓
cv.RETR_LIST:检测其所有轮廓,并将其保存到一条链表中
cv.RETR_CCOMP:检测所有的轮廓,并将它们组织为两层:顶层是各部分的外部边界,第二层时空洞的边界
cv.RETR_TREE:检测左右的轮廓,并构建嵌套轮廓的整个层次-----常用
method:轮廓逼近常用两种方法
cv.CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方式输出多边形(定点序列)
cv.CHAIN_APPROX_SIMPLE:压缩水平的、垂直的和斜的部分,即函数只保留他们的重点部分
逼近方法示意:

步骤检测并绘制:
1、为了更高的准确率,使用二值图像
2、轮廓绘制

src=cv.imread("E:\OpenCVTests\Samples\sample\contours.png") gray=cv.cvtColor(src,cv.COLOR_BGR2GRAY) ret,thresh=cv.threshold(gray,127,255,cv.THRESH_BINARY) contours,hierarchy=cv.findContours(thresh,cv.RETR_TREE,cv.CHAIN_APPROX_NONE) drawSrc=src.copy()#注意需要copy,否则原图会发生改变 res=cv.drawContours(drawSrc,contours,-1,(0,0,255),1)#倒数第三个参数默认为-1,表示绘制全部轮廓,指定为其他值,则在图像中进行选择单个,并且有内外圈之分; # 最后一个参数为颜色宽度 cv.imshow("COntours",res)

简单的轮廓检测:

较为复杂的轮廓检测:

轮廓特征:
可以根据自身需要去构建其他一些衍生特征

cnt=contours[0]#当对轮廓进行特征计算时,需要取对应轮廓,设置取值 are=cv.contourArea(cnt)#面积 length=cv.arcLength(cnt,True)#周长,True表示闭合 print("Area;%s"%are) print("Length;%s"%length)

轮廓逼近:

轮廓逼近原理:

epsilon=0.001*cv.arcLength(cnt,True)#该阈值很重要,决定了轮廓逼近的精度,可以根据检测结果适当调整 approx=cv.approxPolyDP(cnt,epsilon,True)#轮廓逼近运算,第二个值则为比较的阈值,可以自己设定,一般为周长的百分比 drawSrc1=src.copy() dst=cv.drawContours(drawSrc1,[approx],-1,(255,0,0),3) cv.imshow("ApproxControus",dst)


外接矩形、外接圆

x,y,w,h=cv.boundingRect(cnt)#外接矩形API dst2=cv.rectangle(src,(x,y),(x+w,y+h),(0,255,0),2)#矩形的绘制,起点、以及长宽的指定 cv.imshow("boundingRect",dst2) (x,y),radius=cv.minEnclosingCircle(cnt)#外接圆API center=(int(x),int(y)) radius=int(radius) dst3=cv.circle(src,center,radius,(0,255,0),2) cv.imshow("boundigCirclet",dst3)


http://www.jsqmd.com/news/1281953/

相关文章:

  • Axure RP 中文汉化终极指南:三分钟解锁专业中文界面
  • 物联网设备超低功耗设计:NBM7100A与PIC18F47Q10方案解析
  • numpy 2019.9,1
  • 数据中心CDU配套阀门品牌排名:2026横评对比 - 行业深度分析
  • 基于LlamaIndex和OpenAI的AI智能体自我评估系统开发
  • C++引用:从基础别名到现代移动语义的深度解析与实战指南
  • 杭州企业财税业务服务商推荐|2026 正规财税公司十个甄选浙江乘风财务咨询有限公司:疑难税务代办/资质代办/补贴代办财税 - 栗子测评
  • 2026精选金牛区保洁公司综合实力排行名单一览 - 起跑123
  • MongoDB 4.2——持久性
  • 健康咨询数字人落地复盘:魔珐星云让“小星”先像服务入口,再补准认知层
  • 【剑指Offer】斐波那契数列之青蛙跳台阶
  • 5分钟掌握OpenUtau:开源虚拟歌手编辑器的完整使用指南
  • 前端转网安真的快吗,JavaScript 技能在渗透测试中到底能省多少力
  • 智能自动化助手:Twitch Drops Miner如何解放你的游戏时间
  • NBM7100A芯片在纽扣电池物联网设备中的能量优化方案
  • GetQzonehistory:3步完成QQ空间数据备份的终极解决方案
  • 从“听得清”到“智会通”:重庆会议系统场景深耕与技术跃迁
  • WordPress独立站搭建成本全解析:从域名到运维的完整预算方案
  • 不手写代码的第 30 天,我才明白前端这个岗位还剩什么
  • [数据结构] 树和二叉树-哈夫曼树和哈夫曼编码
  • Linux核心命令深度解析:从原理到实战的系统管理指南
  • Calculator客户端和服务器示例
  • Flutter 工程构架设计(MVVM + Repository)
  • mysql学习之旅(十三)——Mysql的存储引擎
  • SAM2-UNet论文复现
  • 南昌地热地板哪家强?口碑好的制造厂推荐 - GrowthUME
  • 2026新版三明防水补漏服务商参考|阳台渗漏修缮方案指南 - 筑宅安
  • Ubuntu smba 重启
  • 26年医护考试App多维参考:发展趋势动态追踪 - 虚拟星辰
  • 2026最新AI写小说工具测评:实测10款写小说ai软件,新手如何开始写小说?