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

cv2.drawContours

1.1什么是轮廓 轮廓可以简单认为成连续点(连着边界)连在一起曲线,具有相同颜色或者灰度。轮廓形状分析和物体检测和识别很有用。为了准确,要使用二值化图像。...需要进行阀值化处理或者Canny边界检测。查找轮廓函数会修改原始图像。如果之后想继续使用原始图像,应该将原始图像储存到其他变量OpenCV,查找轮廓就像在黑色背景超白色物体。...它第一个参数是原始图像,第二个参数是轮廓,一个python列表,第三个参数是轮廓索引(绘制独立轮廓是很有用,当设置为-1时绘制所有轮廓)。接下来参数是轮廓颜色和厚度。...下面用矩阵来演示,轮廓列表每一个坐标上画一个蓝色圆圈。...返回是一个Box2D结构,其中包含矩形最上角角点坐标(x,y)矩形宽和高(w,h)以及旋转角度。但是要绘制这个矩形需要矩形4个角点,可以通过函数cv2.boxPoints()获得

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

OpenCV系列之轮廓入门 | 二十一

因此,找到轮廓之前,请应用阈值或canny边缘检测。 从OpenCV 3.2开始,findContours()不再修改源图像。 OpenCV,找到轮廓就像从黑色背景中找到白色物体。...轮廓是图像中所有轮廓Python列表。每个单独轮廓是一个(x,y)坐标的Numpy数组边界对象。 注意 稍后我们将详细讨论第二和第三个参数以及有关层次结构。...它第一个参数是源图像,第二个参数是应该作为Python列表传递轮廓,第三个参数是轮廓索引(绘制单个轮廓时有用。...您是否需要线上所有点来代表该线?不,我们只需要该线两个端点即可。这就是cv.CHAIN_APPROX_SIMPLE所做。它删除所有冗余点并压缩轮廓,从而节省内存。 下面的矩形图像演示了此技术。...只需轮廓数组所有坐标上绘制一个圆(以蓝色绘制)。

71110

OpenCV 矩形轮廓检测

转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213, 来自:shiter编写程序艺术 基础介绍 OpenCV里提取目标轮廓函数是...外层vectorsize代表了图像轮廓个数,里面vectorsize代表了轮廓上点个数。...mode表示轮廓检索模式 CV_RETR_EXTERNAL表示只检测外轮廓 CV_RETR_LIST检测轮廓不建立等级关系 CV_RETR_CCOMP建立两个等级轮廓,上面的一层为外边界,里面的一层为内孔边界信息...如果内孔内还有一个连通物体,这个物体边界顶层。 CV_RETR_TREE建立一个等级树结构轮廓。...具体参考contours.c这个demo method为轮廓近似办法 CV_CHAIN_APPROX_NONE存储所有的轮廓点,相邻两个像素位置差不超过1,即max(abs(x1-x2),

82110

还在用肉眼找不同吗?这个技术轻松搞定

今天,我们将使用扩展ssim(结构相似性索引)方法,以便使用OpenCVpython可视化图像之间差异。具体来说,我们将在两个输入图片不同处绘制边界框。...# 阈值分割差分图像,然后查找轮廓获得两个输入图片不同区域 thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV...现在我们已经将轮廓存储一个列表,然后沿着每张图片不同区域画出矩形。...# 遍历轮廓 for c in cnts: # 计算轮廓边界框,然后两张输入图片中代表图片不同点区域绘制边界框 (x, y, w, h) = cv2.boundingRect(c) cv2...首先,我们使用cv2.boundingRect计算轮廓周围边界框。 我们将相关(x,y)坐标存储为x和y,此外将矩形宽和高分别用w和h存储。

5.6K50

VC++中使用OpenCV进行形状和轮廓检测

VC++中使用OpenCV进行形状和轮廓检测 VC++中使用OpenCV进行形状和轮廓检测,轮廓是形状分析以及物体检测和识别的有用工具。...如下面的图像Shapes.png中有三角形、矩形、正方形、圆形等,我们如何去区分不同形状,并且根据轮廓进行检测呢?...),消除噪声;计算轮廓周长(封闭或者非封闭)或曲线长度,以指定精度逼近多边形曲线,计算顶点集合或灰度图像非零像素右上边界矩形,获取边界包围盒;然后轮廓多边形角落(顶点)个数objCor,根据objCor...判断轮廓多边形形状类型,特别注意矩形和正方形区别,我们根据轮廓宽高比来区分,当轮廓宽高比大于0.95或者小于1.05时我们可以认定轮廓为正方形 4、最后我们第三步基础上,绘制轮廓或填充轮廓,颜色为粉色...;绘制边界包围盒,颜色为绿色;边界包围盒左上方往上5像素位置,绘制其形状描述文字 C++示例代码 示例代码如下: #include #include

7100

OpenCV 轮廓检测

函数cv::pointPolygonTest计算一个点是否轮廓内,cv::matchShapes测量了2两个轮廓相似程度等等。这里就不一一介绍了。...mode表示轮廓检索模式 CV_RETR_EXTERNAL表示只检测外轮廓 CV_RETR_LIST检测轮廓不建立等级关系 CV_RETR_CCOMP建立两个等级轮廓,上面的一层为外边界,里面的一层为内孔边界信息...如果内孔内还有一个连通物体,这个物体边界顶层。 CV_RETR_TREE建立一个等级树结构轮廓。...具体参考contours.c这个demo method为轮廓近似办法 CV_CHAIN_APPROX_NONE存储所有的轮廓点,相邻两个像素位置差不超过1,即max(abs(x1-x2),...如果想获得一点与多边形封闭轮廓信息,可以调用pointPolygonTest函数,这个函数返回值为该点距离轮廓最近边界距离,为正值为轮廓内部,负值为轮廓外部,0表示边界上。

72720

C++ OpenCV检测并提取数字华容道棋盘

2.数字识别(OCR识别),以前文章中有Android端调用过Tesseract,但PC端一直没装,最近也在看看有没有更合适框架,所以这块还没定下,等弄好了我们继续做这步。...微卡智享 01 图像预处理后进行边缘检测 通常进行边缘检测时直接使用Canny边缘检测,因为检测速度也快,《C++ OpenCV使用大津法求自适应阈值》篇也说过使用大津法求自适应阈值,开始也是这样用...= 4) continue; //求出最小旋转矩形 RotatedRect rRect = minAreaRect(contours[i]); //更新最小旋转矩形面积最大值...03 取出旋转矩形透视变换并提取 上一步找到符合条件最大轮廓编号后,我们单独对这个轮廓进行处理,处理方式就是《C++ OpenCV透视变换改进---直线拟合应用》篇透视变换改进-----采用直线拟合方式...上图中根据最小外接矩形找到最近点进行直接拟合,然后再做透视变换 ? 透视变换后图像效果 ? 最后提取出透视变换后我们实际需要部分 ?

95420

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

矩形是常见几何形状,矩形处理和分析方法也较为简单,OpenCV 4提供了两个函数求取轮廓外接矩形,分别是求取轮廓最大外接矩形boundingRect()函数和求取轮廓最小外接矩形minAreaRect...寻找轮廓外接最大矩形就是寻找轮廓X方向和Y方向两端像素,该矩形长和宽分别与图像两个轴平行。boundingRect()函数可以实现这个功能,该函数函数原型代码清单7-19给出。...为了了解两个外接矩形函数使用方法,代码清单7-21给出了提取轮廓外接矩形示例程序。...程序首先利用Canny算法提取图像边缘,之后通过膨胀算法将邻近边缘连接成一个连通域,然后提取图像轮廓,并提取每一个轮廓最大外接矩形和最小外接矩形,最后图像绘制出矩形轮廓,程序运行结果在图7...OpenCV 4提供了approxPolyDP()函数用于寻找逼近轮廓多边形,该函数函数原型代码清单7-22给出。

3.6K00

计算机视觉 OpenCV Android | 基本特征检测 之 轮廓分析

(1)边界框 最常见获取轮廓外接矩形边界框, 获取每个轮廓边界框, 通过它可以得到与各个轮廓相对应高度与宽度, 并能通过它计算出轮廓纵横比。...调用该API会返回一个Rect对象实例,它是OpenCV关于矩形数据结构, 从中可以得到外界矩形边界框)宽高, 然后就可以计算出轮廓横纵比了。...(2)最小边界框 与上面边界框不同是, 获取到最小边界框有时候不是一个水平或者垂直矩形, 而是一个旋转了一定角度矩形, 但是最小外接矩形(最小边界框)能够更加真实地反映出轮廓几何结构大小,...调用该API会返回一个RotatedRect对象实例, 它是OpenCV关于旋转矩形数据结构, 其包含了旋转角度,矩形宽、高及四个顶点等信息, 通过相关API都可以查询获得, 绘制旋转矩形对象时候...(3)面积与周长 轮廓分析包含了轮廓大小度量, 这些度量最常见就是计算轮廓面积大小与长度大小, 这些数据对分析轮廓与过滤掉一些不符合条件轮廓十分有用。

1.4K20

opencv(4.5.3)-python(十八)--轮廓线入门

轮廓线是形状分析和物体检测与识别的一个有用工具。 • 为了获得更好准确性,使用二进制图像。因此,寻找轮廓线之前,应用阈值或Canny边缘检测。...• 从OpenCV 3.2开始,findContours()不再修改源图像了。 • OpenCV,寻找轮廓线就像从黑色背景寻找白色物体。所以请记住,要找到物体应该是白色,背景应该是黑色。...然后它输出轮廓线和层次结构。轮廓线是一个包含图像中所有轮廓线Python列表。每个单独轮廓线是一个Numpy数组,包含物体边界(x,y)坐标。...它第一个参数是源图像,第二个参数是轮廓线,应该以Python列表形式传递,第三个参数是轮廓线索引(绘制单个轮廓线时很有用。 要绘制所有轮廓线,传递-1),其余参数是颜色、厚度等。...下面是一个矩形图片,演示了这个技术。只要在轮廓线数组所有坐标上画一个圆(用蓝色画)。

61020

C++ OpenCV透视变换综合练习

前言 以前文章《C++ OpenCV之透视变换》介绍过透视变换,当时主要是自己固定变换坐标点,所以在想可不可以做一个通过轮廓检测后自适应透视变换,实现思路通过检测主体轮廓,使用外接矩形和多边形拟合四个最边点进行透视变换...# 实现思路 1 图像灰度图,高斯滤波、二值化 2 形态学开操作,Canny边缘检测 3 查找轮廓,遍历轮廓判断周长大于图像宽度进行多边形拟合 4 判断拟合点大于4个获取到最小旋转矩形 5 通过多边形拟合点计算出离最小旋转矩形最近...4个点 6 找到轮廓最小外接矩形作为透视变换坐标 7 将5、6步骤两个标点计算透视变换矩阵 8 透视变换 重点说明 ?...微卡智享 01 排序旋转矩形标点 ?...图片来自网络 获取旋转矩形函数minAreaRect( ),四个顶点中y值最大顶点为p[0],p[0]围着center顺时针旋转,依次经过顶点为p[1],p[2],p[3]。

1K20

基于OpenCV条形码检测

概述 日常生活,经常会看到条形码应用,比如超市买东西生活,图书馆借书时候。。。 那么这些东西是如何做到准确检测出条形码位置呢?...一系列腐蚀和膨胀操作之后,这些小斑点已经被成功移除了,只剩下条形码区域。 ? 最后寻找一下图片中条形码区域轮廓。...中提供了相应接口,可以很容易地找到图像最大轮廓,如果我们正确地完成了图像处理步骤,它应该会对应于条形码区域。...然后,我们确定最大轮廓最小边界框,并最后显示检测到条形码。 正如我们下图所示,我们已经成功检测到条形码 ?...总结 值得去思考点 1、为啥要转变成灰度图 2、如何去除干扰因素,特别是条形码下面的材料说明区域是采用什么办法去除,小斑点是如何去除 下载1:OpenCV-Contrib扩展模块中文版教程

1.1K10

基于OpenCV特定区域提取

今天我们将一起探究如何使用OpenCVPython从图像中提取感兴趣区域(ROI)。 之间文章,我们完成了图像边缘提取,例如从台球桌中提取桌边。...现在,我们可以使用OpenCV函数“ findContours()”提取该图像轮廓,并仅选择具有以下属性轮廓: 1. 几何形状是圆形或椭圆形 2....面积大于某个阈值(在此示例,值7000可以正常工作)。 对于第一部分,我们将使用OpenCV“ boundingRect()”检测每个轮廓边界矩形,并检查纵横比(高宽比)是否接近1。...使用非极大抑制可以解决此问题,即我们查看所有重叠轮廓,然后选择面积最大轮廓作为最终候选轮廓。逻辑非常简单,因此我们不需要任何内置OpenCVPython函数。...然后,我们使用OpenCV “ add()”函数将此反向蒙版添加到先前获得黑色背景,并获得相同结果,但使用白色背景。 ? 到此为止,我们总结了几种方法,可以轻松地从图像中提取感兴趣区域。

2.8K30

Python OpenCV findContours()函数与drawContours()函数用法

大家好,又见面了,我是你们朋友全栈君。 我用Python3.6,OpenCV3.4。Python3.x与2.x语法不一样,OpenCV2.x与3.x也不一样。看之前得清楚自己用啥。...最后轮廓4,5 是轮廓 3a 轮廓,成为(组织结构) 4 级(最后一级)。按照这种方式给这些形状编号。而在OpenCV有哪些参数可选呢? RETR_LIST 从解释角度来看,这应是最简单。...第三个参数是对轮廓(第二个参数)索引,当需要绘制独立轮廓时很有用,若要全部绘制可设为-1。接下来参数是轮廓颜色和厚度。...还有使用OpenCV查找轮廓时,为了更准确,需要进行二值化处理:阈值化处理或者进行Canny边缘检测。查找轮廓函数会修改原始图片,当需要使用原始图片时得注意。...并且OpenCV查找轮廓就像在黑色背景找白色背景,所以要找物体应该是白色,而背景是黑色(来源于OpenCV官方教程中文版)。

1.6K30

使用folium绘制区域轮廓与网格线

绘制区域轮廓 这里用到是folium绘图库,folium是js上著名地理信息可视化库leaflet.js为Python提供接口,通过它,我们可以通过Python端编写代码操纵数据,来调用leaflet...官网: https://python-visualization.github.io/folium/ 绘制区域轮廓用到是PolyLine方法,本质上就是将区域若干个经纬度坐标点一一连线,颗粒度约细则轮廓越精确...所以,这里我们要绘制北京市行政区域轮廓的话,需要先获取其经纬度坐标点列表。 在上期案例《想知道所在城市有多少条道路?我用python发现北京一共有1.5万条道路!》...我们已经获取了北京市行政区域轮廓经纬度坐标点列表,这里就演示一下绘制过程: import folium m = folium.Map([39.929986, 116.395645], # 北京市中心区域经纬度...绘制过程,需要注意是每条线单独绘制,不能线线互连。

7.3K21

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

今天我们将一起探究如何使用OpenCVPython从图像中提取感兴趣区域(ROI)。 之间文章,我们完成了图像边缘提取,例如从台球桌中提取桌边。...现在,我们可以使用OpenCV函数“ findContours()”提取该图像轮廓,并仅选择具有以下属性轮廓: 1. 几何形状是圆形或椭圆形 2....面积大于某个阈值(在此示例,值7000可以正常工作)。 对于第一部分,我们将使用OpenCV“ boundingRect()”检测每个轮廓边界矩形,并检查纵横比(高宽比)是否接近1。...使用非极大抑制可以解决此问题,即我们查看所有重叠轮廓,然后选择面积最大轮廓作为最终候选轮廓。逻辑非常简单,因此我们不需要任何内置OpenCVPython函数。...用于ROI提取备用倒置掩模(图像源作者) 然后,我们使用OpenCV “ add()”函数将此反向蒙版添加到先前获得黑色背景,并获得相同结果,但使用白色背景。 ?

3.9K20

基于OpenCV车辆变道检测

捕获输入后,使用循环提取帧,并使用汽车haar级联文件检测到坐标,我们循环中汽车周围绘制一个矩形,以在对捕获帧执行其他操作时获得一致性。...当添加像素以平滑图像对象边界时,将使用膨胀来重新获得一些丢失区域。现在,通过基本形态学操作(腐蚀和膨胀)处理从HSV帧第一步生成蒙版。...我们ROI多次运行cv2.findContours()以获得实体,然后使用cv2.drawContours()绘制轮廓区域。...轮廓匹配意味着我们有两个单独计算轮廓相互比较,或者轮廓与抽象模板相比较。...使用Greenline测量角度,并在框架汽车上绘制矩形 ? 弹出警报(作者提供图片) ? 输出 06. 总结 本教程,使用车道变更检测方法探索了智能汽车导航小型演示。

1.2K10

基于OpenCV车辆变道检测

捕获输入后,使用循环提取帧,并使用汽车haar级联文件检测到坐标,我们循环中汽车周围绘制一个矩形,以在对捕获帧执行其他操作时获得一致性。...当添加像素以平滑图像对象边界时,将使用膨胀来重新获得一些丢失区域。现在,通过基本形态学操作(腐蚀和膨胀)处理从HSV帧第一步生成蒙版。...我们ROI多次运行cv2.findContours()以获得实体,然后使用cv2.drawContours()绘制轮廓区域。...轮廓匹配意味着我们有两个单独计算轮廓相互比较,或者轮廓与抽象模板相比较。...使用Greenline测量角度,并在框架汽车上绘制矩形 ? 弹出警报(作者提供图片) ? 输出 06. 总结 本教程,使用车道变更检测方法探索了智能汽车导航小型演示。

1.1K10

OpenCV入门之九】轮廓查找和多边形包围轮廓

Canny一类边缘检测算法可以根据像素之间差异,检测出轮廓边界像素,但它没有将轮廓作为一个整体。所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓。...OpenCV中有一个很强大函数,它可以从二值图像中找到轮廓:findContours函数。 有时我们还需要把找到轮廓画出来,那就要用到函数drawContours了。...不过精准只是因为原图形状比较简单,如果遇到复杂图片,那情况就不太乐观了。 ? ? 使用多边形把轮廓包围 实际应用,常常会有将检测到轮廓用多边形表示出来需求。...比如在一个全家福,我想用一个矩形框将我自己头像框出来,这样就需要这方面的知识了。...OpenCv这方面的函数总结如下: 返回指定点集最外部矩形边界:boundingRect() 寻找给定点集可旋转最小包围矩形:minAreaRect() 寻找最小包围圆形:minEnclosingCircle

1.6K20
领券