




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第OpenCV半小时掌握基本操作之图像轮廓目录概述图像轮廓绘制轮廓轮廓特征轮廓近似边界矩形外接圆【OpenCV】高手勿入!半小时学会基本操作图像轮廓
概述
OpenCV是一个跨平台的计算机视觉库,支持多语言,功能强大.今天小白就带大家一起携手走进OpenCV的世界.
图像轮廓
cv2.findContours可以帮助我们查找轮廓.
格式:
cv2.findContours(image,mode,method,contours=None,hierarchy=None,offset=None)
参数:
image:需要查找轮廓的图片
mode:模式
RETR_EXTERNAL:只检测最外面的轮廓
RETR_LIST:检测所有的轮廓,并将其保存到一条链表中
RETR_CCOMP:检索所有的轮廓,将他们组织为两层:顶部是各分部法外部边界,第二层是空洞的边界
RRTR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次
method:轮廓逼近的方法
CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(定点的序列)
CHAIN_APPROX_SIMPLE:压缩水平的,垂直的和斜的部分,只保留他们的终点部分
返回值:
contours:轮廓本身
hierarchy:轮廓的对应编号
原图:
绘制轮廓
cv2.drawContours可以实现轮廓绘制.
格式:
cv2.drawContours(image,contours,contourIdx,color,thickness=None,lineType=None,hierarchy=None,maxLevel=None,offset=None):
参数:
image:需要绘制轮廓的图片
contours:轮廓
color:颜色
thickness:轮廓粗细
绘制所有轮廓:
#读取图片
img=cv2.imread("contours.jpg")
#转换成灰度图
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化
ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
#获取轮廓(所有)
contours,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
#绘制轮廓
draw_img=img.copy()
res=cv2.drawContours(draw_img,contours,-1,(0,0,255),2)
#图片展示
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果:
绘制单个轮廓:
#读取图片
img=cv2.imread("contours.jpg")
#转换成灰度图
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化
ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
#获取轮廓
contours,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
#绘制轮廓(单一)
draw_img=img.copy()
res=cv2.drawContours(draw_img,contours,0,(0,0,255),2)
#图片展示
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果:
轮廓特征
#获取轮廓
cnt=contours[0]#取第一个轮廓
area=cv2.contourArea(cnt)
print("轮廓面积:",area)
#周长,True表示合并
perimeter=cv2.arcLength(cnt,True)
print("轮廓周长:",perimeter)
输出结果:
轮廓面积:8500.5
轮廓周长:437.9482651948929
轮廓近似
原图:
代码:
#读取图片
img=cv2.imread("contours2.jpg")
#转换成灰度图
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化
ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
#获取轮廓
contours,hieratchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
#绘制轮廓
draw_img=img.copy()
res=cv2.drawContours(draw_img,contours,0,(0,0,255),2)
#图片展示
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()
#取外围轮廓
cnt=contours[0]
#轮廓近似
epsilon=0.1*cv2.arcLength(cnt,True)
approx=cv2.approxPolyDP(cnt,epsilon,True)
#绘制轮廓
draw_img=img.copy()
res=cv2.drawContours(draw_img,[approx],-1,(0,0,255),2)
#图片展示
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果:
直接绘制轮廓:
轮廓近似:
边界矩形
cv2.boundingRect可以帮助我们得到边界矩形的位置和长宽.
例子:
#读取图片
img=cv2.imread("contours.jpg")
#转换成灰度图
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化
ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
#获取轮廓
contours,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
#获取第一个轮廓
cnt=contours[0]
#获取正方形坐标长宽
x,y,w,h=cv2.boundingRect(cnt)
#图片展示
img=cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#轮廓面积
area=cv2.contourArea(cnt)
#边界矩形面积
rect_area=w*h
extent=area/rect_area
print('轮廓面积与边界矩形比:',extent)
输出结果:
轮廓面积与边界矩形比:0.5154317244724715
外接圆
cv2.minEnclosingCircle可以帮助我们得到外接圆的位置和半径.
例子:
#读取图片
img=cv2.imread("contours.jpg")
#转换成灰度图
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化
ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
#获取轮廓
contours,hierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
#获取第一个轮廓
cnt=contours[0]
#获取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业内部如何建立高效的医疗信息安全事件处理机制
- 办公自动化与AI加密区块链技术的安全保障
- 医疗健康数据与疾病预测的精准性
- 健康数据驱动的医疗支出决策模式
- 从医疗事故看医患信任的脆弱性
- 医疗行业数字化转型数据驱动的医疗安全策略
- 以人为本探索更佳的医疗商业服务模式
- 医疗安全文化在专科护理教育中的重要性
- 八年级生物上册知识点总结模版
- 医疗事故预防与风险控制教育
- 2021高中英语译林版选择性必修四单词表
- 《建筑施工测量标准》JGJT408-2017
- 2024届高考作文指导:如何拟写分论点教学设计
- 交回原证承诺书
- 单位给个人借款合同范本
- 军事理论-综合版智慧树知到期末考试答案章节答案2024年国防大学
- 2024年初级保育师技能鉴定考试题库(含答案)
- 日照实验高中国际版入学试卷
- 八年级下册《唐诗三首》中考复习素材之古诗文理解性默写背诵与强化训练
- 九年级初三中考物理综合复习测试卷3套(含答案)
- 2024年上海市各区高三语文二模试卷【文言文阅读题】汇集练附答案解析
评论
0/150
提交评论