kongen kongen
首页
导航站
  • 学习教程

    • Opencv教程
    • C++基础教程
    • C++_Primer教程
    • CUDA编程
  • Opencv
  • CNN
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 十架道路

    • 十架七言系列
    • 基督徒生活观
    • 上帝的蓝图
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Kongen

你好呀(✪ω✪)
首页
导航站
  • 学习教程

    • Opencv教程
    • C++基础教程
    • C++_Primer教程
    • CUDA编程
  • Opencv
  • CNN
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 面试题库

    • HTML
    • CSS
    • jQuery
    • Vue
    • 零碎
  • 面试心得

    • 杂言碎语
  • 十架道路

    • 十架七言系列
    • 基督徒生活观
    • 上帝的蓝图
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • OpenCV简介

  • OpenCV中的 Gui特性

  • 核心操作

  • OpenCV中的图像处理

    • 改变颜色空间
    • 图像的几何变换
    • 图像阈值
    • 图像滤波
    • 形态变换
    • 图形梯度
    • Canny边缘检测
    • 图像金字塔
    • 轮廓:入门
    • 轮廓特征
    • 轮廓属性
      • 目标:
      • 1. Aspect Ratio(长宽比)
      • 2. Extent(大小比)
      • 3. Solidity(密实比)
      • 4. Equivalent Diameter(等效直径)
      • 5. Orientation(方向)
      • 6. Mask & Pixel Points(掩模和像素点)
      • 7. 最大值,最小值及其位置
      • 8. 平均颜色或平均灰度
      • 9. 极点
    • 轮廓:更多函数
    • 轮廓:层次结构
    • 直方图1:查找,绘画,分析
    • 直方图2:均衡直方图
    • 直方图3:2D直方图
    • 反投影直方图
    • 傅里叶变换
    • 模板匹配
    • 霍夫线变换
    • 霍夫圆变换
    • 基于GrabCut算法的交互式前景提取
    • 基于分水岭算法的图像分割
  • 特征检测和描述

  • 视频分析

  • 相机校准和3D重建

  • 机器学习

  • 计算摄影

  • 目标检测

  • Opencv基础原理
  • OpenCV中的图像处理
kongen
2019-06-11
目录

轮廓属性

# 目标:

  • 学习提取一些常用的对象属性,如Solidity,Equivalent Diameter,Mask image,Mean Intensity

# 1. Aspect Ratio(长宽比)

它是对象的边界矩形的宽度与高度的比。

$$ Aspect\ Ratio= \frac{Width}{Height} $$

x,y,w,h = cv.boundingRect(cnt)
aspect_ratio = float(w)/h
1
2

# 2. Extent(大小比)

它是轮廓区域与边界矩形区域的比。

$$ Extent= \frac{Object\ Area}{Bounding\ Rectangle\ Area} $$

area = cv.contourArea(cnt)
x,y,w,h = cv.boundingRect(cnt)
rect_area = w*h
extent = float(area)/rect_area
1
2
3
4

# 3. Solidity(密实比)

Solidity是轮廓区域与其凸包区域的比率。

$$ Solidity= \frac{Contour\ Area}{Convex\ Hull\ Area} $$

area = cv.contourArea(cnt)
hull = cv.convexHull(cnt)
hull_area = cv.contourArea(hull)
solidity = float(area)/hull_area
1
2
3
4

# 4. Equivalent Diameter(等效直径)

等效直径是圆的直径,其面积与轮廓面积相同。

$$ Equivalent\ Diameter=\sqrt{\frac{4\times Contour\ Area}{\pi }} $$

area = cv.contourArea(cnt)
equi_diameter = np.sqrt(4*area/np.pi)
1
2

# 5. Orientation(方向)

方向是对象定向的角度。以下方法还给出了主轴和短轴长度。

(x,y),(MA,ma),angle = cv.fitEllipse(cnt)
1

# 6. Mask & Pixel Points(掩模和像素点)

在某些情况下,我们可能需要包含该对象的所有点。它可以如下完成:

mask = np.zeros(imgray.shape,np.uint8)
cv.drawContours(mask,[cnt],0,255,-1)
pixelpoints = np.transpose(np.nonzero(mask))
#pixelpoints = cv.findNonZero(mask)
1
2
3
4

这里,两个方法,一个使用Numpy函数,另一个使用OpenCV函数(最后一个注释行)给出相同的方法。 结果也相同,但略有不同。 Numpy以**(行,列)格式给出坐标,而OpenCV以(x,y)**格式给出坐标。所以答案基本上会互换。请注意,row=x和column=y。

# 7. 最大值,最小值及其位置

我们可以使用掩模图像找到这些参数。

min_val, max_val, min_loc, max_loc = cv.minMaxLoc(imgray,mask = mask)
1

# 8. 平均颜色或平均灰度

在这里,我们可以找到对象的平均颜色。或者它可以是灰度模式下物体的平均强度。我们再次使用相同的面具来做到这一点。

mean_val = cv.mean(im,mask = mask)
1

# 9. 极点

极值点表示对象的最顶部,最底部,最右侧和最左侧的点。

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])
1
2
3
4

例如,如果我将它应用于印度地图,我会得到以下结果:

image38

编辑 (opens new window)
轮廓特征
轮廓:更多函数

← 轮廓特征 轮廓:更多函数→

最近更新
01
附录L_CUDA底层驱动API
02-08
02
附录K_CUDA计算能力
02-08
03
附录J纹理获取
02-08
更多文章>
Theme by Vdoing | Copyright © 2024-2025 Kongen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×