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

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

• 为了获得更好准确性,使用二进制图像。因此,在寻找轮廓线之前,应用阈值或Canny边缘检测。 • 从OpenCV 3.2开始,findContours()不再修改源图像了。...在那之前,代码样本中给它值对所有的图像都能正常工作。 如何绘制轮廓线? 为了绘制轮廓线,我们使用了cv.drawContours函数。它也可以用来绘制任何形状,只要你有它边界点。...它第一个参数是源图像,第二个参数是轮廓线,应该以Python列表形式传递,第三个参数是轮廓线索引(在绘制单个轮廓线时很有用。 要绘制所有轮廓线,传递-1),其余参数是颜色、厚度等。...这是由这个轮廓逼近方法指定。 如果你传递cv.CHAIN_APPROX_NONE,所有的边界点都会被存储。实际上我们需要所有的点吗?例如,你找到了一条直线轮廓。...你需要这条线上所有点来表示这条直线吗?不,我们只需要那条线两个端点。这就是cv.CHAIN_APPROX_SIMPLE作用。它删除了所有多余点并压缩了轮廓,从而节省了内存。

61420

python-opencv2利用cv2.findContours()函数来查找检测物体轮廓

OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体轮廓。 实现 使用方式如下: import cv2 img = cv2.imread("....那么a[:,0]结果就是: [3,4], [1,2], [5,7], [3,7], [1,8] 这里a[:,0]意思就是a[0:5,0],也就是a[0:5,0:0:2],三者是等价。...比如a[0:5,0]只给出了两个轴索引,则第一个索引就是第一个轴,第二个索引是第二个轴,而第三个索引没有,则默认为[:],即该轴所有内容。...但是实际调用时程序报错了,错误内容如下:too many values to unpack (expected 2) 其实是接受返回值不符,如果你仅仅使用一个变量a去接受返回值,调用len(a),你会发现长度为...参考: OpenCV-Python教程(11、轮廓检测)_sunny2038专栏-CSDN博客_轮廓检测 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

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

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

大家好,又见面了,是你们朋友全栈君。 Python3.6,OpenCV3.4。Python3.x与2.x语法不一样,OpenCV2.x与3.x也不一样。看之前得清楚自己用啥。...本文说白了就是个简单查找轮廓,并且绘制轮廓。简单说一下这俩个函数用法。 函数cv2.findContours()有三个参数。第一个是输入图像,第二个是轮廓检索模式,第三个是轮廓近似方法。...而返回值根据OpenCV版本不同也不一样,这俩个版本都会返回一个元组。OpenCV2.x版本第一个元素是轮廓,,而在OpenCV3.x中第二个才是轮廓。...对于轮廓来说可能还包含父子关系,也就是说一个轮廓里面可能还包含着其他轮廓(比如说房子轮廓可以包含一个矩形窗户,则房子为父,窗户为子,而窗户里可能有个人头,这又是一种父子关系),其中层次结构可以通过对第二个参数设置来选择是否获取...最后轮廓4,5 是轮廓 3a 子轮廓,成为(组织结构) 4 级(最后一级)。按照这种方式给这些形状编号。而在OpenCV有哪些参数可选呢? RETR_LIST 从解释角度来看,中应是最简单

1.6K30

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

为了获得更高准确性,请使用二进制图像。因此,在找到轮廓之前,请应用阈值或canny边缘检测。 从OpenCV 3.2开始,findContours()不再修改源图像。...在OpenCV中,找到轮廓就像从黑色背景中找到白色物体。因此请记住,要找到对象应该是白色,背景应该是黑色。...它第一个参数是源图像,第二个参数是应该作为Python列表传递轮廓,第三个参数是轮廓索引(在绘制单个轮廓时有用。...您是否需要线上所有点来代表该线?不,我们只需要该线两个端点即可。这就是cv.CHAIN_APPROX_SIMPLE所做。它删除所有冗余点并压缩轮廓,从而节省内存。 下面的矩形图像演示了此技术。...第一幅图像显示了用cv.CHAIN_APPROX_NONE获得积分(734个点),第二幅图像显示了用cv.CHAIN_APPROX_SIMPLE获得效果(只有4个点)。

71110

python 基于opencv 绘制图像轮廓

这篇文章主要介绍了python 基于opencv 绘制图像轮廓示例,帮助大家更好利用pythonopencv库处理图像,感兴趣朋友可以了解下 图像轮廓概念 轮廓是一系列相连点组成曲线,代表了物体基本外形...opencv找出图像轮廓 使用cv.findContours()寻找轮廓: import cv2 as cvimport numpy as np img = cv.imread('j.png')img_gray...函数有2个返回值,hierarchy是轮廓间层级关系,这个不用理会。我们主要看contours,它就是找到轮廓了,以链表形式存储,记录了每条轮廓所有像素点坐标(x,y)。 ?...经验之谈:很多人画图时明明用了彩色,没有效果,请检查你是在哪个图上画,画在灰度图和二值图上显然是没有彩色。...以上就是python 基于opencv 绘制图像轮廓详细内容

1.9K11

使用Python-OpenCV消除图像中孤立小区域操作

(img, size) 后面需要将相应算法翻译到C++环境中,而Skimage没有对应C++版本,为了确保python算法和C++算法结果一致性,需要进行迁移,因而打算使用OpenCV来重写去除孤立小区域代码...(img是0-1图像),1表示图像中最大值,cv2.THRESH_BINARY表示图像处理方法,在openCv中有如下记录 ?...然后使用findContours,用来获得二值化图像轮廓信息,findContours中cv2.RETR_EXTERNAL是表示轮廓获取方式,是表示内圈轮廓不需要进行获取,cv2.CHAIN_APPROX_NONE...,就是往这些区域里面填充为0即可,drawContours参量可参考如下: https://docs.opencv.org/3.0-beta/modules/imgproc/doc/drawing_functions.html...以上这篇使用Python-OpenCV消除图像中孤立小区域操作就是小编分享给大家全部内容了,希望能给大家一个参考。

3.1K21

pythonopencv完成图像分割并进行目标物提取

运行平台: Windows Python版本: Python3.x IDE: Spyder 今天我们想实现功能是对单个目标图片提取如图所示: ?...contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE) 边界提取采用cv2.findContours...,在进行边缘提取时候要把图像处理为二值图像,这里要说明一下,不同版本opencv,cv2.findContours输出值不同,有两个有三个,我们这个opencv版本输出为两个。...,是返回1,不是返回-1,是的点我们赋值为100,并保存,最后得到我们想要图片啦 到此这篇关于pythonopencv完成图像分割并进行目标物提取文章就介绍到了,更多相关python opencv...图像分割并提取内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

1.6K10

opencv实践】你确定真的了解寻找轮廓函数吗?【RM大符识别】

前几天师兄跟我讲了一下opencvfindContours()函数识别大符,感觉真的是妙啊!自己学时候马马虎虎,就导致很多细节都没有领悟到,今天给大家分享一下。...要识别出上图蓝色所标的矩形框,其实有很多方法(图像处理从来都是仁者见仁智者见智妙招无穷),利用findContours()函数可以很完美的解决这个问题。我们一步步来。...我们可以看到,左下角红色里面包裹三块黑色,而右上角红色里面仅包含着一块黑色。这就是我们来识别的依据了! 为什么要以此为依据呢?看了下文findContours()函数内容,你就知道了。...下文所介绍,就都是该自定义函数内容了!...opencv中没有直接数父轮廓里所包含内嵌轮廓个数函数。怎么办呢? 我们就检测子轮廓(内嵌轮廓),检测到一个子轮廓,就将其父轮廓对应数组元素加1。

2.7K20

python opencv 检测移动物体并截图保存实例

最近在老家找工作,无奈老家工作真心太少,也没什么面试机会,不过之前面试一家公司,提了一个有意思需求,检测河面没有有什么船只之类物体,当时第一反应是用opencv做识别,不过回家想想,河面相对东西比较少...思路:读取视频关键帧,对比指定区域数据,如果变化较大(排除环境光线变化),则有物体移动,截取当前帧保存备用。 行动:对于python处理视频不了解,找来找去,找到opencv,符合需求。 ?...原来是个熊孩子小学生,上楼就到家了,爹妈教也没管教说不能随地大小便么。 代码如下: #!...rectangleY = 650 # 矩形最上点y坐标 rectangleYCols = 100 # 矩形y轴上长度 KeyFrame = 17 # 取关键帧间隔数,根据视频帧率设置,视频是...opencv 检测移动物体并截图保存实例就是小编分享给大家全部内容了,希望能给大家一个参考。

3K50

二值分析 | OpenCV + skimage如何提取中心线

问题 前几天有个人问了一个问题,问题是这样,他有如下一张二值图像: ? 怎么得到白色Blob中心线,他希望效果如下: ?...显然OpenCV中常见轮廓分析无法获得上面的中心红色线段,本质上这个问题是如何提取二值对象骨架,提取骨架方法在OpenCV扩展模块中,另外skimage包也支持图像骨架提取。...01 安装skimage与opencv扩展包 Python环境下安装skimage图像处理包与opencv计算机视觉包,只需要分别执行下面两行命令: pip install opencv-contrib-python...实现骨架提取 OpenCV图像细化骨架提取方法在扩展模块中,因此需要直接安装opencv-python扩展包。...此外还可以通过形态学膨胀与腐蚀来实现二值图像骨架提取,下面的代码实现就是分别演示了基于OpenCV两种骨架提取方法。

4.4K30

OPENCV轮廓提取findContours和drawContours

大家好,又见面了,是你们朋友全栈君。 最近用OPENCV轮廓提取函数,总结一下。...接下来总结一下在书上看到解释和自己实验结果。 一《学习opencv》中给例子。...图1 输入测试图(上图)和得到轮廓图(下图) 传递findContours()测试图(上图),得到轮廓图(下图)。得到轮廓只有两种,外部轮廓(橙色虚线)或者孔(蓝色点线)。...关于Freeman链码具体内容《学习opencv》这本书里有详细介绍。通过试验发现用这种方式表示轮廓不可以通过drawContours()绘制出检测到轮廓。...图7 轮廓绘制结果 关于更复杂情况就没研究了,就是图7这样结果。有不对地方希望大家批评指正! 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

93220

仅需15分钟,使用OpenCV+Keras轻松破解验证码

最近,正在读 Adrian RoseBrock 撰写《Deep Learning for Computer Vision with Python》。...如果你真的是 100 万用户中一员,或许你应该有所防备了:) 挑战 首先,我们需要做好计划,让我们看看 Really Simple CAPTCHA 生成图片是什么样子。...在这里,我们需要使用 OpenCV 来处理 CAPTCHA 生成图像,OpenCV 拥有 Python API,所以我们可以直接使用 Python 调用它。...在对源代码几分钟破解之后(只要简单地加个『for』循环),我们就拥有了一个内含 10,000 张 PNG 图片训练集,而图片正确答案就是每张图片文件名: Note:在这部分不会给你示例代码。...在图像处理中,我们经常需要检测有相同色彩像素块,这些连续像素块边界可以称之为轮廓。而 OpenCV 有一个内置 findContours() 函数可以检测这些轮廓区域。

954110

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

《用pythonopencv检测图像中条形码》 第六期《OpenCV测量物体尺寸技能 get~》 概述 来源:pyimagesearch 编译:AI算法与图像处理 想应该很多人都玩过腾讯这款游戏...你可以使用下面的OpenCV安装教程学习如何在系统上配置和安装pythonOpenCV。...攻击者可以轻而易举地操纵图片,以欺骗那些不验证url用户,让他们认为自己正在登录银行网络,后面却发现这是一个骗局。...第6行中三元运算符只处理不同版本OpenCVcv2.findcontours返回特征差异。 下图清楚地显示了被处理过图片ROI区域 ?...幸运是,我们现在可以通过pythonOpenCV和scikit-image轻松计算这些不同点和可视化结果。

5.6K50

基于PythonOpenCV轮廓检测聚类

简介 OpenCVfindContours”功能经常被计算机视觉工程师用来检测物体。OpenCV存在,使得我们只需要编写几行代码就可以检测轮廓(对象)。...然而,OpenCV检测到轮廓通常是分散。例如,一个功能丰富图像可能有数百到数千个轮廓,并不意味着图像中有那么多对象。...实现思路 当我在项目中遇到这个问题时,花了很多时间尝试使用不同参数或不同OpenCV函数来检测轮廓,没有一个有效。...然后,做了更多研究,在OpenCV论坛上找到了一篇帖子,它提到了凝聚聚类。但是,没有给出源代码。还发现sklearn支持聚合聚类,但我没有使用它,原因有两个: 这个功能对来说似乎很复杂。...不知道如何输入正确参数,怀疑轮廓检测数据类型是否适合该函数。 需要使用python 2.7、OpenCV 3.3.1和Numpy 1.11.3。

1K10

基于OpenCV特定区域提取

今天我们将一起探究如何使用OpenCVPython从图像中提取感兴趣区域(ROI)。 在之间文章中,我们完成了图像边缘提取,例如从台球桌中提取桌边。...使用了简单OpenCV函数即可完成这项任务,例如inRange、findContours、boundingRect、minAreaRect、 minEnclosingCircle、circle、HoughLines...现在,我们可以使用OpenCV函数“ findContours()”提取该图像中轮廓,并仅选择具有以下属性轮廓: 1. 几何形状是圆形或椭圆形 2....对于第一部分,我们将使用OpenCV“ boundingRect()”检测每个轮廓边界矩形,并检查纵横比(高宽比)是否接近1。 现在我们任务已经完成,还需要进行一些微调。...逻辑非常简单,因此我们不需要任何内置OpenCVPython函数。 另一个重要逻辑是分别识别四个部分,即左上,右上,左下和右下。 这也非常简单,涉及识别图像中心坐标以及每个检测到片段质心。

2.8K30

15 分钟破解网站验证码

依赖 我们要用到以下工具和库。 python3 opencv keras tensorflow 创建样本集 为了达到目的,我们首先要准备样本集,样本如下: ?...但我们也可以采用更好训练方法,这个训练方法使用更少样本数据,但是结果要比直接训练方法好很多,想你已经猜到了,这个方法就是把图片中四个字符切割开,形成四个样本。...幸运是,这个操作opencv已经帮我们实现了,opencv有个函数叫做findContours(),可以按照同样色值区域裁剪我们想要矩形。 首先准备一个图片: ? 转换图片为黑白色。...这样有字符地方为黑色,空白为白色,便于opencv裁剪。 ? 接下来我们用opencvfindContours函数切割图片。 ?...但是实际操作过程中,发现一个问题,就是有时候两个字符靠太近,导致opencv在切割时候,把两个字符切割刀一个图片里了,比如: ? 切割完效果是: ?

1.9K80
领券