当前位置: 首页 > news >正文

站长工具seo综合查询收费吗珠海网站建设案例

站长工具seo综合查询收费吗,珠海网站建设案例,如何利用淘宝建设网站挣钱,微信网站域名备案成功后怎么做什么是图像轮廓#xff1f; 图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中#xff0c;轮廓通常被用于检测物体、分割图像以及提取物体特征。 图像轮廓是由一系列连续的像素点组成#xff0c;这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的…什么是图像轮廓 图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中轮廓通常被用于检测物体、分割图像以及提取物体特征。 图像轮廓是由一系列连续的像素点组成这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的边界位置因此可以用来表示物体的形状和结构。轮廓可以是闭合的也可以是开放的具体取决于物体的形状。 图像轮廓的应用场景 图像轮廓在许多应用场景中都发挥着重要作用下面列举了一些常见的应用场景 目标检测与识别 图像轮廓可以用于检测和定位图像中的物体。通过检测物体的轮廓可以识别出图像中的不同物体并进行分类。 图像分割 轮廓可以用来分割图像中的不同区域或物体。通过提取物体的轮廓可以将图像分成多个不同的部分方便进一步分析和处理。 医学图像分析 在医学图像中轮廓可以用来标记器官、病变或细胞等结构。这对于诊断和治疗决策具有重要意义。 工业自动化 在工业自动化中轮廓可以用于检测产品的缺陷、测量尺寸和定位部件从而实现自动化生产和质量控制。 机器人视觉 机器人可以利用图像轮廓来感知环境和物体从而实现自主导航、抓取物体等任务。 计算机辅助设计CAD 在CAD领域图像轮廓可以用于从实际物体中获取几何信息以便在计算机上进行建模和设计。 虚拟现实与增强现实 图像轮廓可以用来实时跟踪物体将虚拟对象与实际场景进行交互从而创建更加逼真的虚拟现实或增强现实体验。 图像重建与三维建模 利用物体的轮廓可以进行图像的重建和三维建模从而生成立体的物体模型。 边缘检测虽然能够检测出边缘但边缘是不连续的检测到的边缘并不是一个整体。图像轮廓是指将边缘连接起来形成的一个整体用于后续的计算。 OpenCV 提供了查找图像轮廓的函数 cv2.findContours()该函数能够查找图像内的轮廓信息而函数 cv2.drawContours()能够将轮廓绘制出来。 图像轮廓是图像中非常重要的一个特征信息通过对图像轮廓的操作我们能够获取目标图像的大小、位置、方向等信息。 查找图像轮廓findContours函数 函数 cv2.findContours()的语法格式为 image, contours, hierarchy cv2.findContours( image, mode, method)式中的返回值为 image与函数参数中的原始图像 image 一致。contours返回的轮廓。hierarchy图像的拓扑信息轮廓层次。 式中的参数为 image原始图像。8 位单通道图像所有非零值被处理为 1所有零值保持不变。也就是说灰度图像会被自动处理为二值图像。在实际操作时可以根据需要预先使用阈值处理等函数将待查找轮廓的图像处理为二值图像。mode轮廓检索模式。method轮廓的近似方法。 函数 cv2.findContours()的返回值及参数的含义比较丰富下面对上述返回值和参数逐一做出说明。 1. 返回值image 该返回值与参数 image 是一致的就是原始输入图像。在 OpenCV 4.X 中该返回值已经被取消。在 OpenCV 4.X 中函数 cv2.findContours()仅有两个返回值其语法格式为 contours, hierarchy cv2.findContours( image, mode, method) 2. 返回值contours 该返回值返回的是一组轮廓信息每个轮廓都是由若干个点所构成的。例如contours[i] 是第 i 个轮廓下标从 0 开始contours[i][j]是第 i 个轮廓内的第 j 个点。 图 12-1 所示为提取的轮廓示例函数 cv2.findContours()提取出左图的 3 个轮廓每一个轮廓都是由若干个像素点构成的。 下面针对图 12-1 来简单介绍一下 contours 的基本属性。 1type 属性 返回值 contours 的 type 属性是 list 类型list 的每个元素都是图像的一个轮廓用 Numpy中的 ndarray 结构表示。 例如使用如下语句获取轮廓 contours 的类型 print (type(contours))结果为class ‘list’。 使用如下语句获取轮廓 contours 中每个元素的类型 print (type(contours[0]))结果为class ‘numpy.ndarray’。 2轮廓的个数 使用如下语句可以获取轮廓的个数 print (len(contours))结果为“3”表示在图 12-1 中存在 3 个轮廓。 3每个轮廓的点数 每一个轮廓都是由若干个像素点构成的点的个数不固定具体个数取决于轮廓的形状。 例如使用如下语句可以获取每个轮廓内点的个数 print (len(contours[0])) #打印第 0 个轮廓的长度点的个数4 print (len(contours[1])) #打印第 1 个轮廓的长度点的个数60 print (len(contours[2])) #打印第 2 个轮廓的长度点的个数1844轮廓内的点 使用如下语句可以获取轮廓内第 0 个轮廓中具体点的位置属性 print (contours[0]) #打印第 0 个轮廓中的像素点contours[0]对应着图 12-1 中右图左下角矩形轮廓的点输出结果如下 [[[ 79 270]] [[ 79 383]] [[195 383]] [[195 270]]]返回值hierarchy 图像内的轮廓可能位于不同的位置。比如一个轮廓在另一个轮廓的内部。在这种情况下 我们将外部的轮廓称为父轮廓内部的轮廓称为子轮廓。按照上述关系分类一幅图像中所有轮廓之间就建立了父子关系。 根据轮廓之间的关系就能够确定一个轮廓与其他轮廓是如何连接的。比如确定一个轮廓是某个轮廓的子轮廓或者是某个轮廓的父轮廓。上述关系被称为层次组织结构返回值 hierarchy 就包含上述层次关系。 每个轮廓 contours[i]对应 4 个元素来说明当前轮廓的层次关系。其形式为 [NextPreviousFirst_ChildParent]式中各元素的含义为 Next后一个轮廓的索引编号。 Previous前一个轮廓的索引编号。 First_Child第 1 个子轮廓的索引编号。 Parent父轮廓的索引编号。 如果上述各个参数所对应的关系为空时也就是没有对应的关系时则将该参数所对应的值设为“-1”。 使用 print 语句可以查看 hierarchy 的值 print(hierarchy)需要注意轮廓的层次结构是由参数 mode 决定的。也就是说使用不同的 mode得到轮廓的编号是不一样的得到的 hierarchy 也不一样。 参数image 该参数表示输入的图像必须是 8 位单通道二值图像。一般情况下都是将图像处理为二值图像后再将其作为 image 参数使用的。 参数mode 参数 mode 决定了轮廓的提取方式具体有如下 4 种 cv2.RETR_EXTERNAL只检测外轮廓。cv2.RETR_LIST对检测到的轮廓不建立等级关系。cv2.RETR_CCOMP检索所有轮廓并将它们组织成两级层次结构。上面的一层为外边界下面的一层为内孔的边界。如果内孔内还有一个连通物体那么这个物体的边界仍 然位于顶层。cv2.RETR_TREE建立一个等级树结构的轮廓。 下面分别对这四种情况进行简单的说明。 1cv2.RETR_EXTERNAL只检测外轮廓 例如在图 12-2 中仅检测到两个外轮廓轮廓的序号如图中的数字标注所示。 使用 print 语句可以查看 hierarchy 的值 print(hierarchy) [[[ 1 -1 -1 -1] [-1 0 -1 -1]]] 其中 输出值“[ 1 -1 -1 -1]”表示的是第 0 个轮廓的层次。它即第 0 个轮廓的后一个轮廓就是第 1 个轮廓因此第 1 个元素的值是“1”。它的前一个轮廓不存在因此第 2 个元素的值是“-1”。它不存在子轮廓因此第 3 个元素的值是“-1”。它不存在父轮廓因此第 4 个元素的值是“-1”。输出值“[-1 0 -1 -1]”表示的是第 1 个轮廓的层次。它即第 1 个轮廓的后一个轮廓是不存在的因此第 1 个元素的值是“-1”。它的前一个轮廓是第 0 个轮廓因此第 2 个元素的值是“0”。它不存在子轮廓因此第 3 个元素的值是“-1”。它不存在父轮廓因此第 4 个元素的值是“-1”。 此时轮廓之间的关系为 2cv2.RETR_LIST对检测到的轮廓不建立等级关系 例如在图 12-3 中检测到三个轮廓各个轮廓的序号如图中数字的标注所示。 使用 print 语句可以查看 hierarchy 的值 print(hierarchy) [[[ 1 -1 -1 -1] [ 2 0 -1 -1] [-1 1 -1 -1]]] 其中 输出值“[ 1 -1 -1 -1]”表示的是第 0 个轮廓的层次。 它即第 0 个轮廓的后一个轮廓是第 1 个轮廓因此第 1 个元素的值是“1”。 它的前一个轮廓不存在因此第 2 个元素的值是“-1”。 它不存在子轮廓因此第 3 个元素的值是“-1”。 它不存在父轮廓因此第 4 个元素的值是“-1”。 输出值“[2 0 -1 -1]”表示的是第 1 个轮廓的层次。 它即第 1 个轮廓的后一个轮廓是第 2 个轮廓因此第 1 个元素的值是“2”。 它的前一个轮廓是第 0 个轮廓因此第 2 个元素的值是“0”。 它不存在子轮廓因此第 3 个元素的值是“-1”。 它不存在父轮廓因此第 4 个元素的值是“-1”。 输出值“[-1 1 -1 -1]”表示的是第 2 个轮廓的层次。 它即第 2 个轮廓的后一个轮廓是不存在的因此第 1 个元素的值是“-1”。 它的前一个轮廓是第 1 个轮廓因此第 2 个元素的值是“1”。 它不存在子轮廓因此第 3 个元素的值是“-1”。 它不存在父轮廓因此第 4 个元素的值是“-1”。 从上述分析可以看出当参数 mode 为 cv2.RETR_LIST 时各个轮廓之间没有建立父子关系。 此时轮廓之间的关系为 3cv2.RETR_CCOMP建立两个等级的轮廓 当参数 mode 为 cv2.RETR_CCOMP 时建立两个等级的轮廓。上面的一层为外边界下面的一层为内孔边界。 例如在图 12-4 中检测到三个轮廓各轮廓的序号如图中数字的标注所示。 使用 print 语句可以查看 hierarchy 的值 print(hierarchy)[[[ 1 -1 -1 -1][-1 0 2 -1][-1 -1 -1 1]]]其中 输出值“[ 1 -1 -1 -1]”表示的是第 0 个轮廓的层次。 它即第 0 个轮廓的后一个轮廓是第 1 个轮廓因此第 1 个元素的值是“1”。 它的前一个轮廓不存在因此第 2 个元素的值是“-1”。 它不存在子轮廓因此第 3 个元素的值是“-1”。 它不存在父轮廓因此第 4 个元素的值是“-1”。 输出值“[-1 0 2 -1]”表示的是第 1 个轮廓的层次。 它即第 1 个轮廓的后一个轮廓不存在因此第 1 个元素的值是“-1”。 它的前一个轮廓是第 0 个轮廓因此第 2 个元素的值是“0”。 它的第 1 个子轮廓是第 2 个轮廓因此第 3 个元素的值是“2”。 它不存在父轮廓因此第 4 个元素的值是“-1”。 值“[-1 -1 -1 1]”表示的是第 2 个轮廓的层次。 它即第 2 个轮廓的后一个轮廓不存在因此第 1 个元素的值是“-1”。 它的前一个轮廓也不存在因此第 2 个元素的值是“-1”。 它不存在子轮廓因此第 3 个元素的值是“-1”。 它的父轮廓是第 1 个轮廓因此第 4 个元素的值是“1”。 此时轮廓关系为 4cv2.RETR_TREE建立一个等级树结构的轮廓 例如在图 12-5 中检测到三个轮廓各个轮廓的序号如图中的数字标注所示。 使用 print 语句可以查看 hierarchy 的值 print(hierarchy)[[[ 1 -1 -1 -1][-1 0 2 -1][-1 -1 -1 1]]]其中 输出值“[ 1 -1 -1 -1]”表示的是第 0 个轮廓的层次。 它即第 0 个轮廓的后一个轮廓是第 1 个轮廓因此第 1 个元素的值为“1”。 它的前一个轮廓不存在因此第 2 个元素的值是“-1”。 它不存在子轮廓因此第 3 个元素的值是“-1”。 它不存在父轮廓因此第 4 个元素的值是“-1”。 输出值“[-1 0 2 -1]”表示的是第 1 个轮廓的层次。 它即第 1 个轮廓的后一个轮廓不存在因此第 1 个元素的值是“-1”。 它的前一个轮廓是第 0 个轮廓因此第 2 个元素的值是“0”。 它的第 1 个子轮廓是第 2 个轮廓因此第 3 个元素的值是“2”。 它的父轮廓不存在因此第 4 个元素的值是“-1”。 输出值“[-1 -1 -1 1]”表示的是第 2 个轮廓的层次。 它即第 2 个轮廓的后一个轮廓不存在因此第 1 个元素的值是“-1”。 它的前一个轮廓是不存在的因此第 2 个元素的值是“-1”。 它的子轮廓是不存在的因此第 3 个元素的值是“-1”。 它的父轮廓是第 1 个轮廓因此第 1 个元素的值是“1 此时轮廓之间的关系为 需要注意本例中仅有两层轮廓所以使用参数 cv2.RETR_CCOMP 和 cv2.RETR_TREE 得到的层次结构是一致的。当有多层轮廓时使用参数 cv2.RETR_CCOMP 也会得到仅有两层的层次结构而使用参数 cv2.RETR_TREE 会得到含有多个层次的结构。 6. 参数method 参数 method 决定了如何表达轮廓可以为如下值 cv2.CHAIN_APPROX_NONE存储所有的轮廓点相邻两个点的像素位置差不超过 1即 max(abs(x1-x2)abs(y2-y1))1。cv2.CHAIN_APPROX_SIMPLE压缩水平方向、垂直方向、对角线方向的元素只保留该方向的终点坐标。例如在极端的情况下一个矩形只需要用 4 个点来保存轮廓信息。cv2.CHAIN_APPROX_TC89_L1使用 teh-Chinl chain 近似算法的一种风格。cv2.CHAIN_APPROX_TC89_KCOS使用 teh-Chinl chain 近似算法的一种风格。 例如在图 12-6 中左图是使用参数值 cv2.CHAIN_APPROX_NONE 存储的轮廓保存了轮廓中的每一个点右图是使用参数值 cv2.CHAIN_APPROX_SIMPLE 存储的轮廓仅仅保存了边界上的四个点。 在使用函数 cv2.findContours()查找图像轮廓时需要注意以下问题 待处理的源图像必须是灰度二值图。因此在通常情况下都要预先对图像进行阈值分 割或者边缘检测处理得到满意的二值图像后再将其作为参数使用。在 OpenCV 中都是从黑色背景中查找白色对象。因此对象必须是白色的背景必须 是黑色的。在 OpenCV 4.x 中函数 cv2.findContours()仅有两个返回值。 代码示例 import cv2 o cv2.imread(lena.png) cv2.imshow(original,o) gray cv2.cvtColor(o,cv2.COLOR_BGR2GRAY) # ret, binary cv2.threshold(gray,127,255,cv2.THRESH_BINARY) image,contours, hierarchy cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)print(contours\n,contours) print(hierarchy\n,hierarchy)运行这段代码后会发现报错因为我用的是opencv4.5 版本。 报错 提示这个在 OpenCV 4.x 中函数 cv2.findContours()仅有两个返回值 新代码如下 import cv2 o cv2.imread(contours.bmp)gray cv2.cvtColor(o,cv2.COLOR_BGR2GRAY) # ret, binary cv2.threshold(gray,127,255,cv2.THRESH_BINARY) contours, hierarchy cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)print(hierarchy\n,hierarchy)运行结果如下 hierarchy[[[ 1 -1 -1 -1][ 2 0 -1 -1][-1 1 -1 -1]]]原图 可套用前面讲解值得含义去分析一下结果如 输出值“[ 1 -1 -1 -1]”表示的是第 0 个轮廓的层次。 它即第 0 个轮廓的后一个轮廓是第 1 个轮廓因此第 1 个元素的值为“1”。 它的前一个轮廓不存在因此第 2 个元素的值是“-1”。 它不存在子轮廓因此第 3 个元素的值是“-1”。 它不存在父轮廓因此第 4 个元素的值是“-1”。 试着去理解 [ 2 0 -1 -1] [-1 1 -1 -1]
http://www.tj-hxxt.cn/news/218253.html

相关文章:

  • 做网站的盈利点用什么做网站开发
  • 网站备案号含义那里有专做粮食的网站
  • 百度网站模板免费下载迅雷资源做下载网站
  • 房地产网站欣赏推广方式有哪些渠道
  • 天元建设集团有限公司法定代表人宁波专业seo团队
  • 国家电网交流建设分公司网站网站域名中文后缀
  • 做电影网站会违法吗湖南人文科技学院全国排名
  • 鲜花网站建设介绍wordpress常规设置
  • 后期网站建设及维护推广丽水 网站建设
  • 南城网站建设价格贵阳网站建设费用多少网帮你
  • 福州网站设计外包上海的咨询公司排名
  • 昌平上门做网站那高级网站开发培训
  • 网站到期如何续费项目计划书ppt
  • 做心理咨询可以在哪些网站发贴深圳房地产信息平台官网
  • 深圳建站网站公司小程序怎么做网站
  • 苏州高端网站设计企业低调赚大钱的灰色行业
  • 龙门石窟网站建设策划报告那家财经网站做的好
  • 网站建设费如何记账如何做返利网站
  • 长沙网站建设网网站开发费入什么费用
  • 一个域名可以做几个网站栾城哪家公司做网站
  • 个人公司网站建设答辩莱州网站建设包年
  • 订餐网站开发流程广告设计宣传画册
  • 抚州市临川区建设局网站公司排行榜
  • 信阳网站建设培训网站设计怎么做好
  • 空调维修网站模板深圳专业做网站电话
  • 有哪些网站是静态网站注册完域名怎么做网站
  • 团购营销型网站制作seo学徒是做什么
  • 汕头网站搜索优化江西宣传片制作公司
  • 昆明网站建设代理网站域名备案转接入手续
  • 陕西网站建设价格一个小程序开发费用