最火爆的人工智能学习基础课程(2021人工智能视觉训练营)

最火爆的人工智能学习基础课程(2021人工智能视觉训练营)

  • 学习网站
    • 前言
    • 图像轮廓
    • 轮廓特征

学习网站

B站学习网址:人工智能-计算机视觉

唐宇迪:图像处理与计算机视觉基础分享,其中包含超多实战项目:信用卡数字识别项目、文档扫描OCR识别项目、全景图像拼接项目、停车场车位识别项目、答题卡识别判卷项目、新闻数据集文本分类项目、基于CNN搭建图像识别模型项目等实战项目

前言

今天我们来讲图像轮廓

图像轮廓

最火爆的人工智能学习基础课程(2021人工智能视觉训练营)_第1张图片
轮廓检测前提:二值图像,能够更好的进行边缘检测
步骤:

  1. 读入数据(原始图像)
  2. 转化为灰度图
  3. 对图像数据进行二值处理
  4. 展示数据(轮廓检测的图像)
import cv2

def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
img = cv2.imread('1.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)
cv_show('thresh',thresh)

执行轮廓检测函数:

binary,contours,hierarchy = cv2.findContours(thresh,cv2.RETRTREE,cv2.CHAIN_APPROX_NONE)

其中,binary就是你二值的图像,contours是储存了你轮廓的信息,最后一个hierachy是一个层级,这个暂时用不上

绘制轮廓:

#传入绘制图像,轮廓,轮廓索引(-1代表所有轮廓),颜色模式,线条厚度
#注意需要copy,要不原图会变
draw_img = img.copy()
res = cv2.drawContours(draw_img,contours,-1,(0,0,255),2)
cv_show('res',res)

轮廓特征

那你把图像轮廓整出来了肯定是想要获取一些特征的,那如何获取这些特征呢?

  1. 轮廓面积
    首先,前面的contours是所有的轮廓,所以我们后面的算取面积的时候需要提取一个个的轮廓,即:
cnt = contours[0]	#取第0个轮廓
#面积
cv2.contourArea(cnt)
  1. 轮廓周长
    你可以通过轮廓周长进一步筛选轮廓
#周长,True表示闭合的
cv2.arcLength(cnt,True)
  1. 轮廓近似
    轮廓近似暂时用不到,这里不做过多阐述
    最火爆的人工智能学习基础课程(2021人工智能视觉训练营)_第2张图片
  2. 边界矩形
    其实说到底,这些就是调用不同的函数而已
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2),
    其中(x,y),(x+w,y+h)指的是:
    最火爆的人工智能学习基础课程(2021人工智能视觉训练营)_第3张图片
#轮廓
cnt = coutours[0]

#边界矩形boundingRect
x,y,w,h = cv2.boundingRect(cnt)
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv_show('img',img)
  1. 外接圆
    外接圆也是一样,如果感兴趣可以自行CSDN

你可能感兴趣的:(python,笔记,人工智能,计算机视觉,opencv)