OpenCV图像轮廓2(python)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

   案例 ©Fu Xianjun. All Rights Reserved.

一、读取图像

知识储备:凸包的概念

        凸包指的是完全包含原有轮廓,并且仅由轮廓上的点所构成的多边形。凸包的每一处都是凸的,即在凸包内连接任意两点的直线都在凸包的内部。在凸包内,任意连续三个点的内角小于

180°。

知识储备:凸包的获取

hull=cv2.convexHull(points[,clockwise[,returnPoints]]

hull:凸包角点。

clockwise: 布尔值,True时,凸包角点将按顺时针方向排序,False就是逆时针排列凸包角点。

returnPoints: 布尔值默认True,函数返回凸包角点的 x/y 轴坐标,False时,返回轮廓中凸包角点的索引。

知识储备:凸包的绘制

cv2.polylines(src, [points], isClosed,color, thickness)

src:要处理的图像。

points:点集。

isClosed:布尔型,True表示的是线段闭合,False表示的是仅保留线段。

color:线段颜色,格式是(B,G,R)值。

thickness:数值型,厚度,默认值为1,如果对封闭图形,正方形,三角形等传入-1,则会填充整个图形。

知识储备:凸缺陷的概念

凸包与轮廓之间的部分,称为凸缺陷。轮廓上距离这条线最远的点就是凸缺陷的点。

知识储备:cv2.convexityDefects()函数

convexityDefects = cv2.convexityDefects(contour, convexhul)

contour:轮廓。

convexhull:凸包.

1、凸包绘制

知识储备:Extent

可以使用轮廓面积与矩形边界(矩形包围框、矩形轮廓)面积之比Extend来描述图像及其轮廓特征。

计算方法为: Extend =轮廓面积/矩形边界面积

知识储备:最大值和最小值及它们的位置

OpenCV提供了函数cv2.minMaxLoc(),用于在指定的对象内查找最大值、最小值及其位置。

该函数的语法格式是: min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(imgray, mask = mask)

● min_val:最小值。

● max_val:最大值。

● min_loc:最小值的位置。

● max_loc:最大值的位置。

二、凸缺陷检测

1、凸缺陷

2、轮廓常见特征值

知识储备:宽高比

可以使用宽高比(AspectRation)来描述轮廓,例如矩形轮廓的宽高比为: 宽高比=宽度(Width)/高度(Height)

知识储备:Extent

可以使用轮廓面积与矩形边界(矩形包围框、矩形轮廓)面积之比Extend来描述图像及其轮廓特征。

计算方法为: Extend =轮廓面积/矩形边界面积

        宽高比

        Extend

最大值和最小值及它们的位置

极点

知识储备:极点

有时,我们希望获取某个对象内的极值点,例如最左端、最右端、最上端、最下端的四个点。OpenCV提供了相应的函数来找出这些点,通常的语法格式是:

leftmost = tuple(cnt[cnt[:, :,0].argmin()][0])

rightmost = tuple(cnt[cnt[:, :,0].argmax()][0])

topmost = tuple(cnt[cnt[:, :,1].argmin()][0])

bottommost = tuple(cnt[cnt[:, :,1].argmax()][0])

3、轮廓特征值的应用场景

分类1

Python】【Opencvcv2.findContours()cv2.drawContours()cv2.contourArea()函数详解和运行示例 为帮助大家理解和使用cv2.findContours()cv2.drawContours()cv2.contourArea()函数,本文通过对函数内容进行详解,通过运行示例更直观表述。 阅读详情

相关推荐

opencv-python:19_图像轮廓【一】(概念、特征、性质 、面积、周长、边界矩形、方向、极点、cv2.findContours()cv2.drawContours()

OpenCV 中的轮廓 理解什么是轮廓 学习找轮廓,绘制轮廓等 函数:cv2.findContours()cv2.drawContours() 一、查找轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。 在 OpenCV

余喵爱吃鱼的博客 5272

OpenCV实现图像找到轮廓的不同特征,就像面积,周长,质心,边界框等等。】

首先,我们找到了矩形的轮廓cnt。接着,我们使用returnPoints=True选项来计算其包,得到以下四个点的坐标值:[[234 202]],[[51 202]],[[51 79]],[[234 79]]。现在我找到了它的包,returnPoints=True,我得到了以下值:[[234 202]],[[51 202]],[[51 79]],[[234 79]],它们是矩形的四个角点。该函数返回一个四元组(x,y,w,h),其中(x,y)表示矩形左上角的坐标,(w,h)表示矩形的宽度和高度。

weixin_47869094的博客 1731

OpenCV】第十二章: 图像轮廓

一、轮廓检测函数:cv2.findContours() 二、轮廓绘制函数:cv2.drawContours(img, contours, contourIdx, color [, thickness, lineType, hierarchy, maxLevel, offset] ) 三、轮廓特征 四、根据轮廓的矩特征进行图像匹配 五、轮廓拟合 六、包 七、利用形状场景算法比较轮廓 八、计算轮廓的特征()

因为热爱所以坚持 7140

cv2.contourArea函数详解

cv2.findContours找到所有的轮廓之后,想取出包含面积最大的轮廓,用cv2.contourArea算一下,但是得到的结果跟实际差别相当大,最大轮廓面积的计算成很小的一个值,而其中一个不太起眼的区域被计算得倒最大的面积。findContours() 提取轮廓, contourArea() 计算轮廓面积。ContourArea计算轮廓的面积使用格林公式。格林公式是什么?这不重要。ContourArea()求得得面积居然比真实面积还要小。这又是怎么回事呢?

向上生长的程序媛的博客 1万+

opencv-python计算闭合区域的面积的原理

一、cv2.contourArea 起初使用该函数的时候看不懂返回的面积,有0有负数的,于是研究了一下。 opencv计算轮廓内面积函数使用的是格林公式计算轮廓内面积的,公式如下: 由于格林公式计算单连通域面积是以逆时针为正方向的,而有时候我们输入的边缘数组是按照顺时针输入的,所以导致计算面积会出现负数;计算面积存在0的情况一般是只存在一个像素点作为边缘点,所以面积为0。 代码如下: img = cv2.imread('test.png', 0) contours, hierar..

Vertira的博客 8161

基于轮廓提取图像文字2---OpenCV-Python教程(11、轮廓检测

https://blog.csdn.net/sunny2038/article/details/12889059相比C++而言,Python适合做原型。本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同之处。这篇文章介绍在Python中使用OpenCV检测绘制轮廓。提示:转载请详细注明原作者及出处,谢谢!本文介绍在OpenCV-Python检测...

chx0288的博客 5038

python 统计图像中矩形的个数_Opencv-python 找到图像轮廓绘制,cv2.findContours()函数,求轮廓外接矩形,cv2.boundingrect()...

一、查找图像轮廓 - opencv-python中查找图像轮廓的API为:findContours函数 该函数接受二值图作为参数,根据参数,可查找物体外轮廓、内外轮廓,保存轮廓点、压缩等等...如:contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)def findContours(...

weixin_39772420的博客 1587

pythonopencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注

​ 掌握了python+opencv通过使用cv2.boundingRect()函数对图像轮廓进行矩形标注的技巧。 ​

专注python+工程实践的热心婶子 1658

pythonopencv|读取图像(六十七)使用cv2.convexHull()函数实现图像轮廓包标注

掌握了python+opencv通过使用cv2.convexHull()函数对图像轮廓进行包标注的技巧。 ​

专注python+工程实践的热心婶子 1540

pythonopencv|读取图像(六十六)使用cv2.minEnclosingCircle函数实现图像轮廓圆形标注

掌握了python+opencv通过使用cv2.minEnclosingCircle()函数对图像轮廓进行圆形标注的技巧。

专注python+工程实践的热心婶子 1601

Python+Opencv2(二)图像轮廓特征

文章目录一、前言二、Opencv提取图像轮廓1.提取轮廓2.轮廓特征3.轮廓4.直方图5.重心6.傅里叶描述子三、完整代码 一、前言 博主的毕业设计:图像识别手语相关,这里用到了大量opencv关于图像的处理函数,记录一下。本文是图像轮廓的常用函数。 手势本身具有丰富的形变,运动以及纹理特征,选取合理的特征对于手势的识别至关重要。目前 常用的手势特征有:轮廓、边缘、图像矩、图像特征向量以及区...

cungudafa的博客 6708

python opencv2 图像预处理:翻转、仿射变换、色彩空间变换、轮廓检测、文字识别

0:沿 X 轴翻转(垂直翻转);1:沿 Y 轴翻转(水平翻转),-1:沿 X 轴和 Y 轴翻转(同时水平和垂直翻转)。

h0039490的博客 1452

python findcontours_Opencv-python 找到图像轮廓绘制,cv2.findContours()函数,求轮廓外接矩形,cv2.boundingrect()...

一、查找图像轮廓opencv-python中查找图像轮廓的API为:findContours函数该函数接受二值图作为参数,根据参数,可查找物体外轮廓、内外轮廓,保存轮廓点、压缩等等...如:contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)def findContours(imag...

weixin_34478373的博客 1673

python计算图像面积_Python + Opencv2 实现轮廓提取,轮廓区域面积计算

图像处理时,会遇到这样一个场景:找到图像主体轮廓,这是其一,可能为了轮廓,需要用指定的颜色进行标记;轮廓标记完可能任务还没有结束,还需对轮廓所勾勒的像素面积区域统计计算。本篇文章的主要内容就是要解决上面场景遇到的三个问问题找到图像主题轮廓;用指定颜色对源图像进行轮廓标记;计算轮廓中的主体;实验环境配置为 Python + Opencv 3.4, 处理的图像如下:第一步,提取轮廓Opencv...

weixin_39740346的博客 2063

opencv-python3 | cv2.findContours()检测图像中物体轮廓

cv2.findContours检测物体轮廓什么是物体轮廓cv2.findContourscv2.drawContours 什么是物体轮廓 轮廓可以简单地理解为连接所有连续点(沿物体边界)的曲线,这些点通常具有相同的颜色或强度。 轮廓图像分析中具有重要意义,是物体形状分析和对象检测和识别的有用工具,是理解图像语义信息的重要依据。 cv2.findContours 通常,为了提高物体轮廓检测的准确率,首先要将彩色图像或者灰度图像处理成二值图像(黑白图像),这样可以在不丢失轮廓信息的前提下降低图像语义信息的复

Just_do_myself的博客 2万+

OpenCV-Python——第17.2章:图像轮廓特征

目录 1 图像的矩    2 轮廓面积     3 轮廓周长    4 轮廓近似 1 图像的矩 图像的矩可以帮助我们计算图像的质心,面积等。 函数 cv2.moments() 会将计算得到的矩以一个字典的形式返回。 cv2.moments(array, binaryImage) array:输入数组或光栅图像,常用contours[0] binaryImage:默认值是false...

YukinoAI的博客 1992

OpenCV图像处理技术(Python)——图像轮廓2

OpenCV图像处理技术(Python)——图像轮廓 © Fu Xianjun. All Rights Reserved. 文章目录前言学习目标学习内容一、包的查找与绘制1.包的概念2.包的获取3.包的绘制二、缺陷检测1.缺陷的概念2.缺陷三、廓常见特征值1.宽高比2.Extend3.最大值和最小值及它们的位置4.极点总结 前言 根据上一篇的学习,一定对图像轮廓有了很多的理解,今天将继续学习图像轮廓。 学习目标 1.能够理解包的概念及使用方法 2.能够使用缺陷检测进行实际场景应用 3

w11599的博客 670

2计算轮廓大小_Python-OpenCV获取图像轮廓图像处理方法

一、引言在《OpenCV阈值处理函数threshold处理32位彩色图像的案例》介绍了threshold 函数,但threshold 的图像阈值处理对于某些光照不均的图像,这种全局阈值分割的方法不能得到好的效果。图像阈值化操作中,我们更关心的是从二值化图像中分离目标区域和背景区域,仅仅通过固定阈值很难达到理想的分割效果。在图片中的灰度是不均匀的,所以通常情况下图片中不同区域的阈值是不一样的。这样...

weixin_42617406的博客 689

基于Python_Opencv识别图像轮廓

要求:用矩形或者圆形框住图片中的云朵(不要求全部框出) 轮廓检测 Opencv-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。 import cv2 img = cv2.imread('cloud.jpg') # 灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 ret, binar...

Hello Word! 1万+
上一篇: OpenCV图像分割与提取(python)
下一篇: ​OpenCV模板匹配与霍夫变换(python)
Boombl
博客等级 码龄5年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值