前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV图像处理(十五)---图像轮廓特征

OpenCV图像处理(十五)---图像轮廓特征

作者头像
用户5410712
发布2022-06-01 19:14:52
3600
发布2022-06-01 19:14:52
举报
文章被收录于专栏:居士说AI

热力学第三定律是热力学的四条基本定律之一,其描述的是热力学系统的熵在温度趋近于绝对零度时趋于定值。而对于完整晶体,这个定值为零。由于这个定律是由瓦尔特·能斯特归纳得出后进行表述,因此又常被称为能斯特定理或能斯特假定。1923年,吉尔伯特·路易斯和梅尔·兰德尔对此一定律重新提出另一种表述。

前言

在上一期的文章中,我们学习了图像的边缘检测知识,了解到边缘检测实际就是检测图像中亮度变化有区别或者较大的地方,实际效果表现为图像中的轮廓检测。今天,我们继续来学习图像的新知识--轮廓特征。

一、检测并绘制轮廓的方法

轮廓检测是图像处理中常用的方法。OpenCV中使用cv2.findContours()函数来查找检测物体的轮廓,一起来看看吧。

1.1 原始图像

(各式各样的形状)

1.2 代码实践

1)首先我们来寻找轮廓,然后将轮廓进行描红

代码语言:javascript
复制
# 首先我们来寻找轮廓,然后将轮廓进行描红
import cv2
import numpy as np
img = cv2.imread('binary.jpg')
gray = cv2.cvtColor ( img , cv2.COLOR_BGR2GRAY )
ret , binary = cv2.threshold ( gray , 120 , 255 , cv2.THRESH_BINARY )
cv2.imshow("binary", binary)  
image , contours , hierarchy = cv2.findContours ( binary , cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_SIMPLE )
cv2.drawContours(img,contours,-1,(0,0,255),3)

cv2.imshow("img", img)  
cv2.waitKey(0)

2)将找到的轮廓用外接圆进行框选出来

代码语言:javascript
复制
import cv2
import numpy as np
img = cv2.imread('binary.jpg')
gray = cv2.cvtColor ( img , cv2.COLOR_BGR2GRAY )
ret , binary = cv2.threshold ( gray , 120 , 255 , cv2.THRESH_BINARY )
cv2.imshow("binary", binary)  
image , contours , hierarchy = cv2.findContours ( binary , cv2.RETR_EXTERNAL , cv2.CHAIN_APPROX_SIMPLE )

#print(contours[0])
 #以圆形框出找到的轮廓
for i in range(len(contours)):
    (x, y), radius = cv2.minEnclosingCircle(contours[i])
    center = (int(x), int(y))
    radius = int(radius)
    img = cv2.circle(img, center, radius, (0, 255, 0), 2)
    cv2.imshow("img", img)
# 这个函数用于绘制
cv2.drawContours(img,contours,-1,(0,0,255),3)

cv2.imshow("img", img)  
cv2.waitKey(0)

代码分析:需要注意的是cv2.findContours()函数接受的参数为二值图,即黑白的(不是灰度图),所以读取的图像要先转成灰度的,再转成二值图(前期讲述的阈值化操作就是二值图)。

1.3 效果展示

1)首先我们来寻找轮廓,然后将轮廓进行描红

(可以看到,轮廓已经被描红)

2)将找到的轮廓用外接圆进行框选出来

(轮廓已经被外接圆框选,有些地方不太合理哦,后期可以用面积法排除。)

结语

今天的分享结束了,我们主要学习了轮廓检测函数和框选函数,当然框选函数还有矩形等方法,小编的本科毕设就是采用的矩形框选方法哦,感兴趣的同学可以多去了解哦,自行体会各种方法的不同哦,当然轮廓检测有个重要的环节就是要去除不必要的轮廓,通常由面积法,宽高法等等。

编辑:玥怡居士|审核:小圈圈居士

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档