首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏AIoT技术交流、分享

    LabVIEW轮廓分析与比较(基础篇—8

    轮廓(Contour)是指可以在图像中勾勒出目标外形的一组相互连接的曲线(Curve)这些曲线由一系列目标物的边缘点组成。由曲线构成的轮廓通常会勾勒出被测目标的外形(Shape)。 因此,基于提取的目标轮廓,不仅可实现图像分割,还能实现尺寸测量、缺陷检测以及目标的轮廓分析、匹配和轮廓分类等机器视觉应用。 例如,可以将观测目标的轮廓轮廓模板或拟合的曲线进行对比,以判断目标是否存在或对其质量进行检测。也可以通过检测目标轮廓的周长、半径、曲率和角度等关键尺寸信息来判定其是否合格。 此类应用的实现过程常涉及目标的轮廓提取、轮廓匹配以及分类等技术。 ? Nl Vision为轮廓提取、轮廓比较和轮廓分析分类提供了专门的函数集,这些VI位于LabVIEW的视觉与运动→Machine Vision→Contour Analysis函数选板中,如下图所示:

    73550发布于 2021-08-10
  • 来自专栏又见苍岚

    OpenCV 轮廓 —— 轮廓查找

    官方文档 函数使用: cv2.findContours( image, # uint8 单通道图像,非零值即为前景,0为背景 mode, # 轮廓检索模式 method[, 位单通道图像 labels[, # 输出的目标图像 connectivity[, # 8 或 4 分别用于 8 路或 4 路连接 ltype]]] # 输出类型 ) - 连通域个数(包含背景 0) labels # 选择指定算法计算连通域 cv2.connectedComponentsWithAlgorithm( image, # 要标记的 8 位单通道图像 connectivity, # 8 或 4 分别用于 8 路或 4 路连接 ltype, # 输出图像标签类型。 mt.cv_rgb_imread('conc.png', gray=True) retval, labels = cv2.connectedComponentsWithAlgorithm(img, 8,

    4.1K20编辑于 2022-08-09
  • 来自专栏又见苍岚

    OpenCV 轮廓 —— 轮廓分析

    当分析一张图像的时候,针对轮廓,我们也许有很多事情要做。毕竟,所有轮廓都是或即将是我们想要进行识别或操作的。另外相关的还有多种对轮廓的处理,如描述轮廓,简化或拟合轮廓,匹配轮廓到模板,等等。 从这里可以看出,将该精度设置为轮廓周长或外包矩形周长等表示轮廓总长度的值的几分之一比较合适。 这可能包括长度或其他一些反应轮廓整体大小的量度。另一个有用的特性是轮廓矩(contour moment)可以用来概括轮廓的总形状特性,这部分我们在下一节讨论。 24]] ]).astype('float32') ellipse = cv2.fitEllipse(contour) img = np.zeros([60, 30, 3], dtype='uint8' mt.vvd_round(((line[2] + 100*line[0])[0], (line[3] + 100*line[1])[0])) img = np.zeros([50, 50, 3], dtype='uint8'

    4.1K20编辑于 2022-08-09
  • 来自专栏又见苍岚

    OpenCV 轮廓 —— 轮廓匹配

    一个跟轮廓相关的最常用到的功能是如何匹配多条轮廓。我们或许需要比较两条计算好的轮廓,或者比较一条轮廓和一个抽象模板。这两种情况都会在本文讨论。 矩 相关介绍 比较两条轮廓最简洁的方法之一是比较它们的轮廓矩。轮廓矩代表了一条轮廓、一幅图像、一组点集的某些高级特征。下面的所有讨论对轮廓、图像、点集都同样适用,简便起见,将它们统称为对象。 当处理轮廓时,结果是轮廓的长度。 将m_{10}和m_{01}相加再除以mo,能得到整个对象的平均x值和y值。 cv2.moments 计算多边形或光栅化形状的所有矩,最高可达三阶。 官方文档 仅适用于来自 Python 绑定的轮廓矩计算: 注意,输入数组的 numpy 类型应该是 np.int32或 np.float32。 官方文档 函数使用 cv2.matchShapes( contour1, # 第一个轮廓或灰度图像。 contour2, # 第二轮廓或灰度图像。

    4.3K30编辑于 2022-08-09
  • 【OpenCV 轮廓检测与轮廓筛选】

    在OpenCV中,轮廓检测和轮廓筛选是图像处理中常用的技术,用于识别和分析图像中物体的形状。以下是详细的分步说明: 一、轮廓检测(Contour Detection) 1. 调用cv2.findContours()检测轮廓 该函数返回轮廓的坐标点和层级关系。 cv2.CHAIN_APPROX_NONE:保留所有轮廓点。 二、轮廓筛选(Contour Filtering) 1. 基于面积筛选 过滤掉面积过小或过大的轮廓。 blurred = cv2.GaussianBlur(gray, (5, 5), 0) kernel = np.ones((3, 3), np.uint8) cleaned = cv2.morphologyEx 层级结构处理 场景:需区分嵌套轮廓(如字母“O”的内外轮廓)。

    28510编辑于 2026-01-23
  • 来自专栏图像处理与模式识别研究所

    轮廓面积

    temp=np.zeros(o.shape,np.uint8) contoursImg.append(temp) contoursImg[i]=cv2.drawContours(contoursImg 面积= 4.0 contours[4]面积= 9571.0 contours[5]面积= 9281.5 contours[6]面积= 8.5 contours[7]面积= 14.0 contours[8] 4.0 contours[16]面积= 3263.0 contours[17]面积= 9103.5 contours[18]面积= 6578.5 contours[19]面积= 8974.5 算法:轮廓面积是估算图像轮廓部分和起始点连线构成的封闭部分的像素数量 retval=cv2.contourArea(contour[, oriented])) contour表示图像轮廓 oriented表示布尔型值,如果为True,则返回值包含正/负号,表示轮廓是顺时针还是逆时针 ,默认值是False,表示返回retval是绝对值 注意:轮廓面积的单位是像素。

    62520编辑于 2022-05-28
  • 来自专栏图像处理与模式识别研究所

    实心轮廓

    #将灰度图片转换为二值图片 contours,hierarchy=cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)#计算图像轮廓 n=len(contours) contoursImg=[] for i in range(n): temp=np.zeros(o.shape,np.uint8) contoursImg.append (temp) cnt=contours[i] mask=np.zeros(gray.shape,np.uint8) cv2.drawContours(mask,[cnt],0,255,-1)#绘制图像空心轮廓 [115 225] [115 226] [115 227]] 算法:实心轮廓是通过获取特定对象的掩模图像及其对应的像素点位置信息来获取实心轮廓,应用在图像噪声消除等领域。 函数cv2.drawContours()的轮廓宽度参数thickness设置不为-1,即获取图像的空心轮廓

    73120编辑于 2022-05-28
  • 来自专栏图像处理与模式识别研究所

    空心轮廓

    #将灰度图片转换为二值图片 contours,hierarchy=cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)#计算图像轮廓 n=len(contours) contoursImg=[] for i in range(n): temp=np.zeros(o.shape,np.uint8) contoursImg.append (temp) cnt=contours[i] mask=np.zeros(gray.shape,np.uint8) cv2.drawContours(mask,[cnt],0,255,2)#绘制图像空心轮廓 [115 225] [115 226] [115 227]] 算法:空心轮廓是通过获取特定对象的掩模图像及其对应的像素点位置信息来获取空心轮廓,应用在图像噪声消除等领域。 函数cv2.drawContours()的轮廓宽度参数thickness设置为-1,即获取图像的实心轮廓

    66720编辑于 2022-05-28
  • 来自专栏CodecWang

    13: 轮廓

    目标 了解轮廓概念 寻找并绘制轮廓 OpenCV函数:cv2.findContours(), cv2.drawContours() 教程 啥叫轮廓 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形。 谈起轮廓不免想到边缘,它们确实很像。简单的说,轮廓是连续的,边缘并不全都连续(下图)。 经验之谈:寻找轮廓是针对白色物体的,一定要保证物体是白色,而背景是黑色,不然很多人在寻找轮廓时会找到图片最外面的一个框。 ,一般使用cv2.RETR_TREE,表示提取所有的轮廓并建立轮廓间的层级。 to clipboardErrorCopied 小结 轮廓特征非常有用,使用cv2.findContours()寻找轮廓,cv2.drawContours()绘制轮廓

    61810编辑于 2021-12-07
  • 来自专栏图像处理与模式识别研究所

    图像轮廓

    mask=np.zeros(o.shape,np.uint8) mask=cv2.drawContours(mask,contours,-1,(255,255,255),-1)#绘制图像轮廓 cv2. 外部的轮廓为父轮廓,内部的轮廓为子轮廓,按照上述关系分类,一幅图像中所有轮廓之间就建立了父子关系。 ) image表示输入图像 mode表示图像轮廓的检索模式 method表示图像轮廓的近似方法 image=cv2.drawContours(image, contours, contourIdx, 表示绘制轮廓边缘 color表示绘制颜色 thickness表示画笔粗细,可选参数 lineType表示绘制线型,可选参数 hierarchy表示图像轮廓的层次信息 maxLevel表示图像轮廓的层次深度 offset表示偏移参数 例子: 绘制所有轮廓: cv.drawContours(img, contours, -1, (0, 255, 0), 3) 绘制单个轮廓: cv.drawContours(

    62210编辑于 2022-05-28
  • 来自专栏向治洪

    GitHub8W,Google面试指南

    作为全球最顶尖的互联网公司,进入Google工作一直是很多工程师的梦想,自 1996 年诞生以来,Google 至今已推出多款改变世界的互联网产品,旗下也汇聚了一大批优质的工程师与科学家。 与此同时,因其崇尚自由开放,不作恶的互联网理念,也受到了许多互联网优秀人才的认可,Google 也成为了他们最想去的互联网企业之一。

    32810编辑于 2022-11-30
  • 来自专栏图像处理与模式识别研究所

    轮廓测量

    threshold(gray,235,255,cv2.THRESH_BINARY)#将灰度图片转换为二值图片 contours,hierarchy=cv2.findContours(thresh,2,1)#计算图像轮廓轮廓)的最短距离(垂线距离),又称点和多边形的关系测试。 ,表示计算点到轮廓的距离。 如果点在轮廓的外部,返回值为负数;如果点在轮廓上,返回值为0;如果点在轮廓内部,返回值为正数。如果为False,不表示计算距离,表示点相对于轮廓的位置关系,返回值为-1、0和1。 如果点在轮廓的外部,返回值为-1;如果点在轮廓上,返回值为0;如果点在轮廓内部,返回值为1

    87020编辑于 2022-05-28
  • 来自专栏深度学习与计算机视觉

    OpenCV 内轮廓与外轮廓说明

    : CV_RETR_EXTERNAL只检测最外围轮廓,包含在外围轮廓内的内围轮廓被忽略 CV_RETR_LIST 检测所有的轮廓,包括内围、外围轮廓,但是检测到的轮廓不建立等级关系,彼此之间独立,没有等级关系 ,这就意味着这个检索模式下不存在父轮廓或内嵌轮廓,所以hierarchy向量内所有元素的第3、第4个分量都会被置为-1 CV_RETR_CCOMP 检测所有的轮廓,但所有轮廓只建立两个等级关系,外围为顶层 ,若外围内的内围轮廓还包含了其他的轮廓信息,则内围内的所有轮廓均归属于顶层 CV_RETR_TREE, 检测所有轮廓,所有轮廓建立一个等级树结构。 外层轮廓包含内层轮廓,内层轮廓还可以继续包含内嵌轮廓。 用CV_RETR_TREE效果 此时找到的所有轮廓

    1.1K20编辑于 2022-05-07
  • 来自专栏从零开始学 Web 前端

    轮廓属性outline

    轮廓属性outline outline属性是用来设置一个或多个单独的轮廓属性的简写属性 , 例如 。 轮廓有下面几个属性: { outline-style: solid; outline-width: 10px; outline-color: red; } 他们有一种简写形式: { outline: 10px solid red; } 轮廓的特点 轮廓不占据空间,它们被描绘于内容之上。 可以做到下图的效果: 我发现,当设置 outline-offset 为负值的时候,轮廓会出现在div的内部,如果继续扩大其负值,最终轮廓会收缩成一个“➕”加号,正好可以作为文件上传样式中间的加号。 #545454; outline-offset: -66px; border: 2px solid #545454; } outline-offset: -66px; 是关键,它表示轮廓

    56610编辑于 2022-11-28
  • 来自专栏图像处理与模式识别研究所

    轮廓内核处理

    convolve2d(img, sharpen_kernel,mode='valid') edge_kernel=np.array([[-1,-1,-1], [-1,8, plt.figure(figsize=(5,5)) plt.imshow(denoised_equalized, cmap='gray') plt.axis('off') plt.show() 算法:轮廓内核处理是突出显示像素值之间的差异

    50730编辑于 2022-05-29
  • 来自专栏CodecWang

    14: 轮廓特征

    学习计算轮廓特征,如面积、周长、最小外接矩形等。图片等可到文末引用处下载。 目标 计算物体的周长、面积、质心、最小外接矩形等 OpenCV函数:cv2.contourArea(), cv2.arcLength(), cv2.approxPolyDP() 等 教程 在计算轮廓特征之前 轮廓周长 perimeter = cv2.arcLength(cnt, True) # 585.7Copy to clipboardErrorCopied 参数2表示轮廓是否封闭,显然我们的轮廓是封闭的 ,比如M['m00']表示轮廓面积,与前面cv2.contourArea()计算结果是一样的。 小结 常用的轮廓特征: cv2.contourArea()算面积,cv2.arcLength()算周长,cv2.boundingRect()算外接矩。

    1.2K11编辑于 2021-12-07
  • 来自专栏流川疯编写程序的艺术

    OpenCV 轮廓检测

    image_name = "swan.jpg"; Mat src = imread(image_name); imshow("src",src); Mat gray(src.size(),CV_8U itContours->size() << std::endl; } // draw black contours on white image cv::Mat result(gray.size(),CV_8U 画出轮廓就比较简单了: [cpp] view plain copy //画出轮廓  Mat result(image.size(),CV_8U,Scalar(255));  //画出轮廓, dst= Mat::zeros(canny_output.size(), CV_8UC3); for (int i = 0; i< contours.size(); i++) { //随机颜色 rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)); drawContours(dst, contours, i, color, 2, 8,

    1.3K20编辑于 2022-11-29
  • 来自专栏JNing的专栏

    opencv: 绘制矩形轮廓框,并记录轮廓框坐标

    步骤简述 使用OpenCV绘制矩形轮廓框,一般包括如下步骤: 转换为灰度图; 进行阈值处理; 进行中值滤波; 在原始图像上绘制矩形框。 附图解析 原始图像: 第一步,转换为灰度图: 第二步,经过阈值处理: 第三步,中值滤波后: 最后一步,在原始图像上绘制矩形框: 生成的记录文件(矩形轮廓框四个端点的平面坐标 394,168 394,190] 6: [382,166 382,169 387,166 387,169] 7: [211,160 211,189 238,160 238,189] 8: 179,189 235,132 235,189] 14: [355,129 355,192 372,129 372,192] Code 附上自己写的实验代码: # coding=utf-8 /origin.jpg') # 文档路径,用于记录轮廓框坐标 txt_file = open('.

    3.8K30发布于 2018-09-28
  • 来自专栏CSDN博客专家-小蓝枣的博客

    OpenCV 入门教程:轮廓特征和轮廓匹配

    OpenCV 入门教程:轮廓特征和轮廓匹配 导语 轮廓特征和轮廓匹配是图像处理中用于描述和比较轮廓的技术。通过提取轮廓的形状、面积、周长等特征,并进行比较和匹配,我们可以实现目标识别、形状分析等应用。 在本文中,我们将以轮廓特征和轮廓匹配为中心,为你介绍使用 OpenCV 进行轮廓处理的基本步骤和实例。 ❤️ ❤️ ❤️ ❤️ ❤️ 一、轮廓特征 轮廓特征是指从轮廓中提取的描述性信息,用于对轮廓进行定量分析。以下是一些常见的轮廓特征: 1 面积( Area ):表示轮廓包围的区域的面积大小。 二、轮廓匹配 轮廓匹配是比较两个轮廓之间的相似度或差异度的技术。通过计算轮廓的形状、面积、周长等特征的差异,并进行比较,我们可以判断轮廓之间的相似性或不相似性。 ,并通过边缘检测和轮廓寻找获取轮廓

    6K10编辑于 2023-07-10
  • 来自专栏图像处理与模式识别研究所

    轮廓的矩

    n=len(contours) contoursImg=[] for i in range(n): temp=np.zeros(o.shape,np.uint8) contoursImg.append +str(i)+"]",contoursImg[i]) print("轮廓"+str(i)+"的矩:\n",cv2.moments(contours[i]))#提取轮廓特征 print("轮廓"+str 19的面积:8974 算法:图像轮廓的矩是一个轮廓、一幅图像、一组点集的全局特征,包括几何特征,例如大小、位置、角度、形状等。 如果两个图像轮廓的矩一致,那么两个图像轮廓一致。在图像位置发生变化时,虽然图像轮廓的面积、周长等特征不变,但是更高阶的特征会随着位置的变化而发生变化。 零阶矩“m00”的含义最为直观表示图像轮廓的面积。

    79520编辑于 2022-05-28
领券