python图像轮廓识别,数字图像处理图像边缘检测

  python图像轮廓识别,数字图像处理图像边缘检测

  本文主要介绍python数字图像处理中边缘轮廓检测实例的详细说明。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  00-1010简介1。查找_轮廓)2。接近多边形曲线

  

目录

  在前面的python数字图像处理的简单滤波中,我们已经解释了很多用于检测边缘的算子,其中canny算子是应用最广泛的边缘检测算子。

  这篇文章解释了一些其他的方法来检测轮廓。

  

引言

  测量模块中的find_contours()函数可用于检测二值图像的边缘轮廓。

  功能原型是:

  skimage.measure.find_contours(数组,级别)

  Array:二进制数组图像

  Level:在图像中查找轮廓的级别值。

  返回大纲列表集,每个大纲都可以被for循环取出。

  示例1:

  将numpy作为np导入

  将matplotlib.pyplot作为plt导入

  从不足的进口数量,得出

  #生成二进制测试图像

  img=np.zeros([100,100])

  IMG [20336040,60336080]=1 #矩形

  Rr,cc=draw \u(60,60,10) #小圆

  1,cc1=draw.circle (20,30,15) #大圆

  img[rr,cc]=1

  img[rr1,cc1]=1

  #检测所有图形的轮廓

  contours=measure . find _ contours(img,0.5)

  #绘制轮廓

  fig,(ax0,ax1)=plt.subplots(1,2,figsize=(8,8))

  ax0.imshow(img,plt.cm.gray)

  ax1.imshow(img,plt.cm.gray)

  对于n,枚举中的轮廓(轮廓):

  ax1.plot(等高线[:1],等高线[:0],线宽=2)

  ax1.axis(图像)

  ax1.set_xticks([])

  ax1.set_yticks([])

  plt.show()

  结果如下:不同的轮廓用不同的颜色显示。

  示例2:

  将matplotlib.pyplot作为plt导入

  从尺寸、数据、颜色等方面入手

  #生成二进制测试图像

  img=color.rgb2gray(data.horse())

  #检测所有图形的轮廓

  contours=measure . find _ contours(img,0.5)

  #绘制轮廓

  fig,axes=plt.subplots(1,2,figsize=(8,8))

  ax0,ax1=axes.ravel()

  ax0.imshow(img,plt.cm.gray)

  ax0.set_title(原始图像)

  rows,cols=img.shape

  ax1.axis([0,行,列,0])

  对于n,枚举中的轮廓(轮廓):

  ax1.plot(等高线[:1],等高线[:0],线宽=2)

  ax1.axis(图像)

  ax1.set_title(轮廓)

  plt.show()

  

1、查找轮廓(find_contours)

  近似多边形曲线有两个函数:subdivide_polygon()和approximate_polygon()

  Subdivide_polygon()使用B样条来细分多边形的曲线,该曲线通常位于凸包线内。

  函数格式为:

  skim age . measure . subdivide _ polygon(coords,degree=2,preserve_ends=False)

  坐标:坐标点序列。

  3360b样条的度数,默认值为2

  Preserve_ends:如果曲线为非闭合曲线,是否保存起点和终点的坐标,默认值为false。

  返回细分为的坐标点序列。

  Approximate_polygon()是基于道格拉斯-普克算法的近似曲线模拟。它根据指定的公差值近似多边形曲线链,该值也在凸包线内。

  函数格式为3360。

  skim age . measure . approximate _ polygon(坐标,容差)

  坐标:坐标点序列

  公差:公差值

  近似多边形曲线坐标序列。

  示例:

  将numpy作为np导入

  将matplotlib.pyplot作为plt导入

  从尺寸、数据、颜色等方面入手

  #生成二进制测试图像

  hand=np.array([[1.64516129,1.16145833],

  [1.64516129, 1.59375],

  [1.35080645, 1.921875],

  [1.375, 2.18229167],

  [1.68548387, 1.9375],

  [1.60887097, 2.55208333],

  [1.68548387, 2.69791667],

  [1.76209677, 2.56770833],

  [1.83064516, 1.97395833],

  [1.89516129, 2.75],

  [1.9516129, 2.84895833],

  [2.01209677, 2.76041667],

  [1.99193548, 1.99479167],

  [2.11290323, 2.63020833],

  [2.2016129, 2.734375],

  [2.25403226, 2.60416667],

  [2.14919355, 1.953125],

  [2.30645161, 2.36979167],

  [2.39112903, 2.36979167],

  [2.41532258, 2.1875],

  [2.1733871, 1.703125],

  [2.07782258, 1.16666667]])

  #检测所有图形的轮廓

  new_hand=hand.copy()

  对于_在范围(5):

  new _ hand=测量。subdivide _ polygon(new _ hand,度数=2)

  #用道格拉斯-普克算法近似细分多边形

  appr _ hand=测量。近似_多边形(新_手,公差=0.02)

  打印(坐标数: ,len(手)、len(新手)、len(appr_hand))

  fig,axes=plt.subplots(2,2,figsize=(9,8))

  ax0,ax1,ax2,ax3=axes.ravel()

  ax0.plot(hand[:0],hand[:1], r )

  ax0.set_title(原手)

  ax1.plot(new_hand[:0],new_hand[:1], g )

  ax1.set_title(细分_多边形)

  ax2.plot(appr_hand[:0],appr_hand[:1], b )

  ax2.set_title(近似多边形)

  ax3.plot(hand[:0],hand[:1], r )

  ax3.plot(new_hand[:0],new_hand[:1], g )

  ax3.plot(appr_hand[:0],appr_hand[:1], b )

  ax3.set_title(all )

  以上就是大蟒数字图像处理之边缘轮廓检测的详细内容,更多关于大蟒数字图像边缘轮廓的资料请关注盛行信息技术软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: