首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

matlab任意图形轮廓坐标提取【含源代码】

(图形来源:Microsoft Office专业增强版2019图图库) 细心的伙伴不难发现上图的每个图形外面都画了一圈黑色虚线,不错,这些虚线就是根据图形轮廓提取的图像坐标绘制的。...之前有伙伴在咱们的QQ交流群中询问有关图像轮廓坐标提取的问题,今天就给大家念叨念叨。 今天给大家介绍两种提取轮廓坐标的方法。...处理过程如下:读取想要处理的图像,将图像二值化,再通过图像边缘坐标提取函数直接进行提取即可。...本文介绍两个函数涉及轮廓坐标提取的函数: ① bwboundaries,功能:提取图像的边界位置 clc;clear;close all; I = imread('bird.jpg'); % 读取目标图像...当然,方法不止一种,爱折腾的伙伴可以尝试提取图像边缘,然后根据边缘来提取坐标。 今天的内容不多,但其可用的范围还是挺广的,具体用在哪里,谁用谁知道啰。

1.2K30

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

步骤简述 使用OpenCV绘制矩形轮廓框,一般包括如下步骤: 转换为灰度图; 进行阈值处理; 进行中值滤波; 在原始图像上绘制矩形框。...附图解析 原始图像: 第一步,转换为灰度图: 第二步,经过阈值处理: 第三步,中值滤波后: 最后一步,在原始图像上绘制矩形框: 生成的记录文件(矩形轮廓框四个端点的平面坐标.../origin.jpg') # 文档路径,用于记录轮廓坐标 txt_file = open('....threshold(src=pic, thresh=200, maxval=255, type=1) # 中值滤波,去除椒盐噪声 pic = cv2.medianBlur(pic, 5) # 边缘检测,得到的轮廓列表..._1, contours, _2 = cv2.findContours(pic, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 根据轮廓列表,循环在原始图像上绘制矩形边界

3.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

OPENCV轮廓提取findContours和drawContours

最近用OPENCV的轮廓提取函数,总结一下。...void findContours//提取轮廓,用于提取图像的轮廓 ( InputOutputArray image,//输入图像,必须是8位单通道图像,并且应该转化成二值的 OutputArrayOfArrays...,//所有输入的轮廓,每个轮廓被保存成一个point向量 int contourIdx,//指定要绘制轮廓的编号,如果是负数,则绘制所有的轮廓 const Scalar& color,//绘制轮廓所用的颜色...图1 输入的测试图(上图)和得到的轮廓图(下图) 传递给findContours()测试图(上图),得到轮廓图(下图)。得到的轮廓只有两种,外部轮廓(橙色虚线)或者孔(蓝色点线)。...所以method这个参数决定了轮廓的表达方式,这要根据自己提取轮廓后的应用选择合适的轮廓描述方法来决定用哪一种。

96720

OpenCV学习+常用函数记录③:霍夫变换与轮廓提取

OpenCV 霍夫变换与轮廓提取 3. 霍夫变换 3.1 霍夫直线 3.2 霍夫圆 4. 轮廓提取 4.1 查找轮廓 4.2 绘制轮廓 3....轮廓提取 基于图像边缘提取或二值化的基础寻找对象轮廓 边缘提取的阈值会最终影响轮廓发现的结果 主要API有以下两个 findContours 发现轮廓 drawContours 绘制轮廓 4.1...、父轮廓、内嵌轮廓的索引编号 轮廓检索模式: RETR_EXTERNAL 只检测最外层轮廓 RETR_LIST 提取所有轮廓,并放置在list中,检测的轮廓不建立等级关系 RETR_CCOMP 提取所有轮廓...,并将轮廓组织成双层结构(two-level hierarchy),顶层为连通域的外围边界,次层位内层边界 RETR_TREE 提取所有轮廓并重新建立网状轮廓结构 轮廓检索算法: CHAIN_APPROX_NONE...获取每个轮廓的每个像素,相邻的两个点的像素位置差不超过1 CHAIN_APPROX_SIMPLE 压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的重点坐标,如果一个矩形轮廓只需4个点来保存轮廓信息

90010

threejs地球、星空、世界轮廓绘制、飞线、坐标涟漪 、旋转动画(下篇)

实现过程 实现步骤分解: ThreeJS环境初始化 星空背景 添加带纹理的地球 世界地图轮廓边界绘制 地球光晕 添加地球云层 城市位置标注和涟漪效果 添加飞线B样条 地球自转和镜头缩放动画 接上篇从第七步骤说起...工具函数 每个城市都是通过坐标准确的添加到地图,那么就涉及到经纬度转球面xyz坐标。...其实就是经纬度转xyz坐标系,这张图可以看明白。...z坐标轴对应经度-90度,而不是90度 // 经纬度坐标转球面坐标计算公式 var x = radius * Math.cos(lat) * Math.cos(lon); var y =...radius * Math.sin(lat); var z = radius * Math.cos(lat) * Math.sin(lon); // 返回球面坐标 return {

3.1K20

threejs地球、星空、世界轮廓绘制、飞线、坐标涟漪 、旋转动画(上篇)

目标设计样子: 实现步骤分解: ThreeJS环境初始化 星空背景 添加带纹理的地球 世界地图轮廓边界绘制 地球光晕 添加地球云层 城市位置标注和涟漪效果 添加飞线B样条 地球自转和镜头缩放动画 初始化...var mesh = new Mesh(geometry, material); //网格模型对象Mesh return mesh; }; 现在是这个样子了,光秃秃的缺少了点什么: 世界地图轮廓边界绘制...刚才光秃秃的地球,需要加上点轮廓。...LineLoop和Line功能一样,区别在于首尾顶点相连,轮廓闭合,但是绘制条数太多会用性能问题,LineSegments 是一条线绘制,提高性能,需要复制顶点。...Float32Array(pointArr); // 创建属性缓冲区对象 var attribute = new BufferAttribute(vertices, 3); //3个为一组,表示一个顶点的xyz坐标

9.5K31

资深大佬:基于深度学习的图像边缘和轮廓提取方法介绍

作者:黄浴 链接:https://zhuanlan.zhihu.com/p/78051407 已授权转载,仅供学习分享,禁止二次转载 导读 边缘和轮廓提取是一个非常棘手的工作,细节也许就会被过强的图像线条掩盖...边缘提取 • HED 整体嵌套边缘检测(Holistically-Nested Edge Detection,HED 是一个深度学习的边缘提取的算法,两个特色:(1)整体图像训练和预测; (2)多尺度、...轮廓提取 DeepEdge 以前大多使用纹理或显著性等低级特征来检测轮廓,而DeepEdge利用目标相关特征作为轮廓的高级线索检测。...边缘检测器提取候选轮廓点,然后在每个候选点周围,提取四个不同尺度的补丁,同时通过预训练的KNet五个卷积层。...部分实验结果见图: 从左到右依此是(a)输入图像,(b)GT轮廓,(c)具有预训练CEDN的轮廓检测,和(d)具有细调CEDN的轮廓检测。 ? 参考文献 1.

6.1K11

opencv 实现特定颜色线条提取与定位操作

本篇文章通过调用opencv里的函数简单的实现了对图像里特定颜色提取与定位,以此为基础,我们可以实现对特定颜色物体的前景分割与定位,或者特定颜色线条的提取与定位 主要步骤: 将RGB图像转化为HSV,H....CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息 cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89...对于轮廓是以坐标的形式返回,可以通过函数cv2.drawContours()绘制出轮廓 绘制矩形区域对轮廓进行定位 主要代码如下: import numpy as np import cv2 import...,其中contours为坐标值,此处只检测外形轮廓 _, contours, hierarchy = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2....CHAIN_APPROX_SIMPLE) if len(contours) 0: #cv2.boundingRect()返回轮廓矩阵的坐标值,四个值为x, y, w, h, 其中x, y为左上角坐标

4K10

总结 | 基于OpenCV提取特定区域方法汇总

现在,我们可以使用OpenCV函数“ findContours()”提取该图像中的轮廓,并仅选择具有以下属性的轮廓: 1. 几何形状是圆形或椭圆形 2....这也非常简单,涉及识别图像中心坐标以及每个检测到的片段的质心。...对段轮廓进行质心检测需要在轮廓上应用OpenCV “ moments()”函数,然后使用以下公式计算中心 X,Y坐标: center_x,center_y =(int(M [“ m10”] / M [”...m00”]),int(M [“ m01”] / M [“ m00”])) 将线段质心坐标与图像中心坐标进行比较,可以将四个线段分别放置在各自的位置。...在黑色背景上提取的ROI 对于白色背景,我们首先创建一个白色画布,然后通过使用OpenCV函数“ drawContours()”绘制轮廓为黑色(R,G,B = 0,0,0)且厚度为FILLED的轮廓,如下所示创建颜色反转的蒙版

4K20

基于OpenCV的特定区域提取

今天我们将一起探究如何使用OpenCV和Python从图像中提取感兴趣区域(ROI)。 在之间的文章中,我们完成了图像边缘提取,例如从台球桌中提取桌边。...现在,我们可以使用OpenCV函数“ findContours()”提取该图像中的轮廓,并仅选择具有以下属性的轮廓: 1. 几何形状是圆形或椭圆形 2....这也非常简单,涉及识别图像中心坐标以及每个检测到的片段的质心。...对段轮廓进行质心检测需要在轮廓上应用OpenCV “ moments()”函数,然后使用以下公式计算中心 X,Y坐标: center_x,center_y =(int(M [“ m10”] / M [”...m00”]),int(M [“ m01”] / M [“ m00”])) 将线段质心坐标与图像中心坐标进行比较,可以将四个线段分别放置在各自的位置。

2.8K30

GDAL对缺失投影定义的AIG文件根据经纬度坐标提取像元值

任务背景:需要根据经纬度坐标提取AIG文件(AIG—Arc/Info二进制网格)对应像素值 了解到gdal能够完成这项任务,但是之前没有接触过gdal,所以现在网络上查找资料,发现如下链接所示的教程。...基于GDAL批量提取经纬度/投影坐标对应像元的值 查找gdal支持的数据格式,了解gdal支持AIG数据格式: gdal文档 具体格式介绍如上,只需知在给予‘hdr.adf'文件的路径的条件下即可打开AIG...lon:经度坐标 :param lat:纬度坐标 :return:地理空间坐标对应的投影坐标 ''' # ct = osr.CoordinateTransformation...(行列号) :param extend:图像的空间范围 :param x:投影坐标x :param y:投影坐标y :return:投影坐标(x,y)对应的影像图像行列号...GDAL的六参数模型将给定的投影、地理坐标转为影像图上坐标后,返回对应像元的像素值 :param file_path: 图像的文件路径 :param coordinates: 坐标、一维列表

1.7K00

从天地图中提取全市的建筑物矢量轮廓-以苏州市为例

在处理后,得到的最终结果也有非常大的差别,左边是从1米空间分辨率的天地图中提取的,右边则是0.5米。可以明显看到左边的锯齿更多,不光滑。...所以提高下载栅格的空间分辨率能有效把关最后的提取轮廓矢量质量。 当然一味的高空间分辨率也是不可取的,因为原始栅格影像的切片级数已经到头了,再高也不会有清晰度的提升,只会增加数据存储大小。...简化面、平滑面 在最后从栅格转面的时候,勾选简化面能有效平滑矢量轮廓的锯齿,如果还是没有达到期望的话,可以尝试以下工具: 概化; 简化建筑物; 规则化建筑物覆盖区; …… 这些处理可能会消耗大量计算机性能...(听到笔记本的风扇声,我怕它起飞后找不回来了 ) 去除道路 放大看效果,道路也被提取出来,如何剔除道路呢?

65220

matlab爱好者版冰墩墩(BingDwenDwen)开源了,开源了,开源了!!!

(来源:百度百科冰墩墩) 简单地再讲一下大致地过程:通过PS描摹得到冰墩墩的轮廓线,然后通过matlab编程提取轮廓线坐标,有了坐标就可以完美动态展示任何一个想要绘制的部分,还能实现图形的矢量化操作...不知道如何用matlab提取轮廓线坐标伙伴,可以参看matlab爱好者公众号之前推送的文章(matlab任意图形轮廓坐标提取【含源代码】)。...整个绘制过程,主要涉及到plot和patch两个matlab绘图函数,整个冰墩墩被划分成60个小部分,包括所有冰墩墩部位、北京2022年冬奥会会徽、奥运会会徽以及各个文字,全部实现了坐标化。...],'Name','冰墩墩 (Bing DwenDwen) —— matlab爱好者','NumberTitle','off','Color','w','Menubar','none'); % 自定义坐标轴位置...axes('Position',[0.01 0.01 0.99 0.99]); axis equal; % 设置坐标轴范围 xlim([0 6500]); ylim([0 6500]); % 设置Y轴方向

76420

【从零学习OpenCV 4】轮廓外接多边形

输出矩形中心坐标的属性是center,假设RotatedRect类的变量为rrect,可以通过opt=rrect.center命令进行读取,其中坐标存放的变量是Point2f类型的变量。...为了了解两个外接矩形函数的使用方法,代码清单7-21中给出了提取轮廓外接矩形的示例程序。...程序中首先利用Canny算法提取图像边缘,之后通过膨胀算法将邻近的边缘连接成一个连通域,然后提取图像的轮廓,并提取每一个轮廓的最大外接矩形和最小外接矩形,最后在图像中绘制出矩形轮廓,程序的运行结果在图7...第二个参数是多边形的逼近结果,以多边形顶点坐标的形式输出,是CV_32SC2类型的N×1的Mat类矩阵,可以通过输出结果的顶点数目初步判断轮廓的几何形状。...程序中首先提取了图像的边缘,然后对边缘进行腐蚀运算将靠近的边缘变成一个连通域,之后对边缘结果进行轮廓检测,并对每个轮廓进行多边形逼近,将逼近结果绘制在原图像中,并通过判断逼近多边形的顶点数目识别轮廓的形状

3.7K00

opencv 图像轮廓的实现示例

它会返回凸包上点的坐标。如果设置为False,就会返回与凸包点对应的轮廓上的点。...图像掩模和像素点 有时我们需要构成对象的所有像素点,我们可以将图像的所有轮廓提取出来,然后使用函数cv.drawContours()将轮廓内的区域填充为指定的颜色。...然后使用cv.findNonZeros()函数将非零像素点的坐标提取出来,这样就得到了构成对象的像素点。...NonZeroPoints=NonZeroPoints.reshape((-1,2)) #验证我们提取出来的像素点坐标是否正确,我们使用变量 #column和row分别存放非零像素点在图像中坐标的列数和行数...通过上面两幅图的对比结果,我们可以看到:对象的组成像素点被正确地提取出来了。

1.3K31
领券