当前位置: 首页 > news >正文

flash 3d 网站源码住房建设网站

flash 3d 网站源码,住房建设网站,centos wordpress安装教程,合肥做公司网站公司轮廓特征详解在图像处理和计算机视觉中,轮廓(Contour) 是物体边界的一种表现形式。通过提取图像中的轮廓,我们可以获取目标区域的形状、面积、周长、外接几何体等重要特征,为后续的目标识别、分类和检测奠定基础。Open…


轮廓特征详解

在图像处理和计算机视觉中,轮廓(Contour) 是物体边界的一种表现形式。通过提取图像中的轮廓,我们可以获取目标区域的形状、面积、周长、外接几何体等重要特征,为后续的目标识别、分类和检测奠定基础。

OpenCV 提供了一系列函数来计算和操作轮廓,本文将结合代码示例对常见的轮廓特征进行说明。


原图:

1. 轮廓面积 cv2.contourArea()

#--------轮廓特征--------
import  cv2phone = cv2.imread('phone.png')#读取原图
phone_gray = cv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)#灰度图的处理
ret, phone_binary = cv2.threshold(phone_gray,120,255, cv2.THRESH_BINARY)#阈值处理为二值
_,contours, hierarchy = cv2.findContours(phone_binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
# contours = cv2.findContours(phone_binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)[-2]  # 通用# cv2.contourArea(contour[, oriented]) -> retval     轮廓面积
# contour:顶点构成的二维向量组(如轮廓列表contours中的一个轮廓)
# oriented,定向区域标志,默认值为 False,返回面积的绝对值,Ture 时则根据轮廓方向返回带符号的数值
area_0 = cv2.contourArea(contours[0])
print(area_0)
area_1 = cv2.contourArea(contours[1])
print(area_1)
  • cv2.contourArea() 用于计算轮廓所包围的区域面积。

  • 参数说明:

    • contour:单个轮廓(点集)。

    • oriented:布尔值,默认为 False,返回面积绝对值;若为 True,则返回带符号的值(顺时针或逆时针)。

在实际应用中,面积可用于 过滤小轮廓(噪声),或用于 目标筛选(如筛选面积最大的轮廓)。


2. 轮廓周长 cv2.arcLength()

# arclength(InputArray curve, bool closed)            轮廓周长
# curve,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型。
# closed,用于指示曲线是否封闭。
length = cv2.arcLength(contours[0],closed=True)
print(length)
  • cv2.arcLength() 用于计算轮廓的 周长

  • 参数:

    • curve:输入轮廓点集。

    • closed:是否闭合,通常为 True

周长可用于目标形状分析,例如判断目标是否接近圆形、多边形等。


3. 按面积筛选轮廓

# 根据面积显示特定轮廓
a_list=[]
for i in contours:if cv2.contourArea(i)>10000:a_list.append(i)
image_copy = phone.copy()
image_copy = cv2.drawContours(image=image_copy, contours=a_list, contourIdx=-1,color=(0,255,0),thickness=3)
cv2.imshow('Contours_show_10000', image_copy)
cv2.waitKey(0)
  • 这里通过遍历所有 contours,利用 cv2.contourArea(i)>10000 进行筛选,仅保留面积大于 10000 的轮廓。

  • 通过 cv2.drawContours() 绘制符合条件的轮廓。

这种方法常用于 去除小噪声轮廓,只显示大目标。


4. 轮廓排序与最大轮廓提取

# '''轮廓定位方法 根据轮廓面积进行排序'''
sortcnt = sorted(contours, key=cv2.contourArea, reverse=True)[0]  # 选取最大面积的轮廓
image_contours = cv2.drawContours(phone.copy(), contours=[sortcnt], contourIdx=-1, color=(0,255,255),thickness=3)#绘制轮廓
cv2.imshow('image_contours',image_contours)
cv2.waitKey(0)
  • 使用 Python 内置 sorted() 函数,按照 cv2.contourArea 计算的面积进行排序,reverse=True 表示从大到小排序。

  • 这里选取面积最大的轮廓 sortcnt,并绘制在图像上。

👉 常见应用:提取图像中最主要的目标区域。


5. 外接圆与外接矩形

### 外接圆、外接矩形...
'''外接圆、外接矩形'''
cnt = contours[6]
(x,y),r = cv2.minEnclosingCircle(cnt)#计算轮廓的外接圆
phone_circle = cv2.circle(phone, (int(x),int(y)),int(r), (0,255,0),  2)#绘制外接圆的方法
cv2.imshow('phone_circle',phone_circle)
cv2.waitKey(0)x,y,w,h = cv2.boundingRect(cnt)#计算轮廓的最小外接矩形
phone_rectangle = cv2.rectangle(phone, (x,y), (x+w,y+h), (0,255,0), 2)  # 在图像上绘制矩形
cv2.imshow('phone_rectangle',phone_rectangle)
cv2.waitKey(0)

外接圆 cv2.minEnclosingCircle()

  • 计算轮廓的最小外接圆。

  • 返回值:圆心坐标 (x,y) 和半径 r

  • 适用于检测近似圆形目标。

外接矩形 cv2.boundingRect()

  • 计算轮廓的最小外接矩形(水平的,不旋转)。

  • 返回 (x,y,w,h),分别为矩形左上角坐标及宽高。

  • 常用于目标定位与裁剪。


总结

本文结合代码演示了 轮廓特征的核心方法

  1. 面积cv2.contourArea()

  2. 周长cv2.arcLength()

  3. 按面积筛选轮廓

  4. 排序提取最大轮廓

  5. 外接圆、外接矩形

这些特征在 物体检测、目标识别、形状分析 等任务中非常常用。
通过这些几何特征,我们可以更好地理解和利用轮廓信息。


在计算机视觉和图像处理领域,轮廓特征(Contour Features)用于描述图像中目标物体的形状、大小和位置等几何属性。轮廓是通过检测物体的边界(像素边缘)形成的,它是表示图像物体的一种重要方式。以下是常见的 轮廓特征,以及它们的详细说明:


1. 轮廓面积(Contour Area)

cv2.contourArea(contour)

  • 功能:计算轮廓所包围区域的面积。

  • 使用场景

    • 用于 目标筛选,例如去除小噪声或小物体。

    • 计算对象的 尺寸,并用面积来分类。

示例:

area = cv2.contourArea(contour)
  • 返回值:轮廓的面积(float类型)。

  • 说明:面积可以帮助我们了解物体的大小,通常会用面积来进行阈值过滤,只保留大于某个面积的轮廓。


2. 轮廓周长(Contour Perimeter / Arc Length)

cv2.arcLength(contour, closed)

  • 功能:计算轮廓的周长或弧长。

  • 参数

    • contour:需要计算的轮廓。

    • closed:布尔值,是否闭合轮廓。

示例:

length = cv2.arcLength(contour, closed=True)
  • 返回值:轮廓的周长(float类型)。

  • 说明:周长可以描述物体的边界长度,对于形状的 复杂性分析 非常有用。


3. 外接矩形(Bounding Rectangle)

cv2.boundingRect(contour)

  • 功能:计算轮廓的最小外接矩形。

  • 使用场景

    • 目标定位,用于显示和裁剪。

    • 形状简化,通过矩形来描述目标,特别是当目标接近矩形时。

示例:

x, y, w, h = cv2.boundingRect(contour)
  • 返回值:矩形的 (x, y) 位置和 (w, h) 宽高。

  • 说明:外接矩形简单直观,广泛用于目标定位,尤其是在 目标检测 中。


4. 最小外接圆(Minimum Enclosing Circle)

cv2.minEnclosingCircle(contour)

  • 功能:计算轮廓的最小外接圆,即能完全包围轮廓的最小圆形。

  • 使用场景

    • 判断目标是否接近 圆形

    • 碰撞检测 中,如果目标是圆形的,可以使用外接圆来简化计算。

示例:

(x, y), r = cv2.minEnclosingCircle(contour)
  • 返回值:圆心 (x, y) 和半径 r

  • 说明:外接圆是目标的最小圆形框,它常用于检测 近似圆形的目标


5. 凸包(Convex Hull)

cv2.convexHull(contour)

  • 功能:计算轮廓的凸包,即包含轮廓的最小凸多边形。

  • 使用场景

    • 用于提取物体的 凸性。如果目标物体是凸形状,凸包几乎和物体本身一致。

    • 也可用于形状 简化,忽略内部凹陷。

示例:

hull = cv2.convexHull(contour)
  • 返回值:轮廓的 凸包,即包含所有轮廓点的最小凸多边形。

  • 说明:凸包可以用来处理 不规则的形状,去除内凹部分,描述物体的外轮廓。


6. 轮廓的方向(Contour Orientation)

cv2.isContourConvex(contour)

  • 功能:判断轮廓是否是 的。

  • 使用场景

    • 判断轮廓是否有内凹部分,从而判断物体的 凸凹性质

示例:

is_convex = cv2.isContourConvex(contour)
  • 返回值:布尔值,True 表示是凸的,False 表示有凹陷。

  • 说明:该方法有助于确定形状的基本性质,例如 凸多边形凹多边形 的区别。


7. 最小外接椭圆(Min Area Rectangle)

cv2.fitEllipse(contour)

  • 功能:拟合轮廓到最小外接椭圆。

  • 使用场景

    • 用于 椭圆形物体的检测,或 旋转矩形 的定位。

示例:

ellipse = cv2.fitEllipse(contour)
  • 返回值:椭圆的 中心点长短轴旋转角度

  • 说明:该特征可以帮助处理 非矩形目标,例如 椭圆形的目标


8. 轮廓近似(Contour Approximation)

cv2.approxPolyDP(contour, epsilon, closed)

  • 功能:通过近似多边形逼近轮廓,用于简化轮廓。

  • 使用场景

    • 对轮廓进行 简化,减少轮廓的点数,使其更适合后续处理。

示例:

approx = cv2.approxPolyDP(contour, epsilon=0.02*cv2.arcLength(contour, True), closed=True)
  • 返回值:简化后的 多边形点集

  • 说明:该方法可以用来减少 轮廓点的数量,使轮廓变得更加简洁,常用于 形状检测


9. 轮廓的质心(Centroid)

质心(也叫 重心)是指轮廓的“几何中心”,它可以用于表示物体的位置。

如何计算?

  1. 计算轮廓的 ,例如二阶矩

  2. 使用矩的公式计算 质心

M = cv2.moments(contour)
cx = int(M['m10'] / M['m00'])
cy = int(M['m01'] / M['m00'])
  • 返回值:质心的坐标 (cx, cy)

  • 说明:质心常用于 目标定位,特别是跟踪物体时。


总结

轮廓特征是图像分析中的一个重要部分,它们帮助我们获取目标物体的形状、大小、位置等几何信息。常见的轮廓特征包括 面积、周长、外接矩形、外接圆、凸包方向质心 等。在实际应用中,轮廓特征被广泛应用于 目标识别、目标定位、形状分析图像分割 等任务。通过提取这些特征,能够有效地理解和分析图像中的物体。

http://www.dtcms.com/a/522150.html

相关文章:

  • HarmonyOS 项目入门:构建跨设备智能应用的强大框架
  • 法律行业网站建设校园电商平台网站建设
  • dw做网站弊端阿里logo设计平台
  • 衡水网站建设制作html音乐播放器代码
  • 算法面经常考题整理(3)大模型
  • 柯城网站建设新版lnmp安装wordpress
  • 甘肃建设厅网站二级建造师报名时间香河县住房和城乡建设局网站
  • 购物网站开发流程图莱州 网站制作
  • 做网站建设话术找人做网站排名优化
  • 怎么制作网站源码网站建设工具
  • 东莞网站设计智能 乐云践新wordpress自动发现
  • 网站跳转到另外一个网站怎么做软件开发工具是什么意思
  • 网站建设的基本费用深圳大型网络科技公司
  • 小型企业网站如何建设广告投放方式
  • 吉安网站建设jxthw苏州建设培训中心网站
  • 上海网站设计工作室网站建设 会议纪要
  • 怎么做自己的网站教程北京做网做
  • 江苏缘生源建设工程有限公司网站个人主页经典句子
  • 西安做网站找腾帆如何建立一个网站链接的文档
  • 新手建什么网站赚钱吗建筑设计软件有哪些软件
  • 沈阳网站建设的公司wordpress 算数验证码
  • 本地建设网站辽宁建设工程招标网站
  • 海南免费做网站怎么修改地图的公司地址
  • 用php做网站用什么框架新冠疫苗接种查询
  • 深圳市网站建设平台凡客建站网
  • 公司网站域名做邮箱温州网站建设制作设计公司
  • 安贞街道网站建设玉田网站设计公司
  • 网站接广告能赚多少钱wordpress前台修改文章
  • 哈尔滨市呼兰区住房城乡建设局网站蓝月wordpress
  • 摄影的网站设计特点最近的头条新闻