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、轮廓绘制srccv.imread(E:\OpenCVTests\Samples\sample\contours.png) graycv.cvtColor(src,cv.COLOR_BGR2GRAY) ret,threshcv.threshold(gray,127,255,cv.THRESH_BINARY) contours,hierarchycv.findContours(thresh,cv.RETR_TREE,cv.CHAIN_APPROX_NONE) drawSrcsrc.copy()#注意需要copy否则原图会发生改变 rescv.drawContours(drawSrc,contours,-1,(0,0,255),1)#倒数第三个参数默认为-1表示绘制全部轮廓指定为其他值则在图像中进行选择单个并且有内外圈之分 # 最后一个参数为颜色宽度 cv.imshow(COntours,res)简单的轮廓检测较为复杂的轮廓检测轮廓特征可以根据自身需要去构建其他一些衍生特征cntcontours[0]#当对轮廓进行特征计算时需要取对应轮廓设置取值 arecv.contourArea(cnt)#面积 lengthcv.arcLength(cnt,True)#周长True表示闭合 print(Area%s%are) print(Length%s%length)轮廓逼近轮廓逼近原理epsilon0.001*cv.arcLength(cnt,True)#该阈值很重要决定了轮廓逼近的精度可以根据检测结果适当调整 approxcv.approxPolyDP(cnt,epsilon,True)#轮廓逼近运算第二个值则为比较的阈值可以自己设定一般为周长的百分比 drawSrc1src.copy() dstcv.drawContours(drawSrc1,[approx],-1,(255,0,0),3) cv.imshow(ApproxControus,dst)外接矩形、外接圆x,y,w,hcv.boundingRect(cnt)#外接矩形API dst2cv.rectangle(src,(x,y),(xw,yh),(0,255,0),2)#矩形的绘制起点、以及长宽的指定 cv.imshow(boundingRect,dst2) (x,y),radiuscv.minEnclosingCircle(cnt)#外接圆API center(int(x),int(y)) radiusint(radius) dst3cv.circle(src,center,radius,(0,255,0),2) cv.imshow(boundigCirclet,dst3)

相关新闻

最新新闻

3分钟掌握Unlock Music音频解密工具:让加密音乐重获自由的终极指南

3分钟掌握Unlock Music音频解密工具:让加密音乐重获自由的终极指南

3分钟掌握Unlock Music音频解密工具:让加密音乐重获自由的终极指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目…

2026/7/28 18:32:02
6岁患儿临床试验离世后:仇子龙Nature论文事件

6岁患儿临床试验离世后:仇子龙Nature论文事件

一则国际顶刊调查报道,揭开一场罕见病个体化基因编辑人体试验的悲剧;紧随其后,学术博主公开质疑相关《Nature》论文数据存在异常。上海交通大学医学院仇子龙团队 CHD3 碱基编辑研究事件,同时牵动人体临床试验伦理监管、学术论文数…

2026/7/28 18:32:02
for in

for in

var x var mycars new Array() mycars[0] “Saab” mycars[1] “Volvo” mycars[2] “BMW” for (x in mycars) { document.write(mycars[x] “”) }

2026/7/28 18:32:02
axure原型的使用

axure原型的使用

当我们开始学编程的时候,可以先了解一下axure,axure原型的使用可以让我们直观的了解我们的设计意图,接下来总结一下axure。 一、认识axure 1.元件(三大部分) 公共元件:box、h1-h3、image、label等 表单&…

2026/7/28 18:32:02
DamaiHelper:从手动抢票到智能掌控,你的演唱会门票管家

DamaiHelper:从手动抢票到智能掌控,你的演唱会门票管家

DamaiHelper:从手动抢票到智能掌控,你的演唱会门票管家 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 你是否曾经历过…

2026/7/28 18:32:02
EurekaClient

EurekaClient

1.pom.xml<?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

2026/7/28 18:27:01

月新闻