边界矩形的宽高比

x,y,w,h = cv2.boundingRect(cnt)
aspect_ratio = float(w)/h

Extent

Extent就是轮廓面积与边界矩形面积的比。

area = cv2.contourArea(cnt)
x,y,w,h = cv2.boundingRect(cnt)
rect_area = w*h
extent = float(area)/rect_area

Solidity

Solidity就是轮廓面积与凸包面积的比。

area = cv2.contourArea(cnt)
hull = cv2.convexHull(cnt)#计算出凸包形状
hull_area = cv2.contourArea(hull)#计算凸包的面积
solidity = float(area)/hull_area

Equivalent Diameter

Equivalent Diameter就是与轮廓面积相等的圆形的直径。

area = cv2.contourArea(cnt)
equi_diameter = np.sqrt(4*area/np.pi)

方向

方向是指向物体的角度。下面的方法也给出了主轴和小轴的长度。

(x,y),(MA,ma),angle = cv2.fitEllipse(cnt)#MA,ma 分别为长轴短轴长度

掩模和像素点

有时我们需要构成对象的所有像素点,我们可以这样做:

# coding=utf-8
import cv2
import numpy as npimg = cv2.imread("/home/wl/10.jpeg")
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转灰度图
mask = np.zeros(img_gray.shape,np.uint8) #依据图像的大小建立一个全黑的模板
ret, thresh = cv2.threshold(img_gray, 175, 255, 0) #灰度图像二值化处理
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnt = contours[1]
cv2.drawContours(mask,[cnt],0,255,-1) #num为希望进行掩模显示的轮廓, # 这里一定要使用参数-1, 绘制填充的的轮廓
while(1):cv2.imshow("mask",mask)cv2.imwrite("/home/wl/baocun1.jpg", mask)k = cv2.waitKey(1) & 0XFFif k==ord('q'):break;
cv2.destroyAllWindows()

效果图:

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

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

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

平均颜色及平均灰度

我们也可以使用相同的掩模求一个对象的平均颜色或平均灰度。

mean_valCol = cv2.mean(img,mask = mask) #彩色图像的平均颜色
mean_valGray=cv2.mean(imgray,mask = mask) #平均灰度

轮廓极点

一个对象最上面,最下面,最左边,最右边的点。

cnt=cnts[num] ##首先从所有的轮廓中选择其中的一个轮廓
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])

转载于:https://www.cnblogs.com/longwhite/p/10397747.html

Opencv笔记(十七)——轮廓性质相关推荐

  1. OpenCV笔记-对轮廓进行平滑处理

    项目背景 有一个像素数较少的图像,在上面找轮廓,显示轮廓锯齿严重: 如何将轮廓进行平滑? 一开始是想着将轮廓上的拐点拟合出一个贝塞尔曲线,由于要绘制回原图像上,且贝塞尔曲线的生成也没有找到很好的办法: ...

  2. OpenCV学习笔记(十七)——K均值聚类

    当我们要预测的是一个离散值时,做的工作就是"分类".机器学习模型还可以将训练集中的数据划分为若干个组,每个组被称为一个"簇(cluster)".它的重要特点是在 ...

  3. OpenCV中的轮廓及性质

    转:https://www.kancloud.cn/aollo/aolloopencv/272892 OpenCV中的轮廓 1.1什么是轮廓 轮廓可以简单认为成连续的点(连着边界)连在一起的曲线,具有 ...

  4. Opencv 笔记5 边缘处理-canny、sobel、Laplacian、Prewitt

    一.边缘检测概述 边缘检测是计算视觉中的基本问题,边缘检测的目的是标识图像中亮度变换明显的点.边缘检测大幅度的减少了图像的数据量(分为两种:灰度图像边缘检测和彩色图像边缘检测),并且剔除了不相关的信息 ...

  5. Python-OpenCV 笔记6 -- 轮廓(Contours)

    Python-OpenCV 笔记6 – 轮廓(Contours) 参考文档: https://docs.opencv.org/3.4/dd/d49/tutorial_py_contour_featur ...

  6. OpenCV-Python 中文教程15——OpenCV 中的轮廓

    OpenCV-Python 中文教程15--OpenCV 中的轮廓 一.初识轮廓 目标 • 理解什么是轮廓 • 学习找轮廓,绘制轮廓等 • 函数: cv2.findContours(), cv2.dr ...

  7. OpenCV笔记-图像预处理1

    OpenCV笔记 一. 图像预处理 1. 图像显示与存储 1.1 颜色空间 颜色空间(RGB) 加法混色 三通道:RGB 一个像素的颜色值:(b,g,r) 取值范围:[0,255] or [0.0,1 ...

  8. OpenCV检测图像轮廓

    轮廓只不过是图像中连接的曲线,或者图像中连通部分的边界,轮廓通常以图像中的边缘来计算,但是,边缘和轮廓的区别在于轮廓是闭合的,而边缘可以是任意的.边缘的概念局限于点及其邻域像素,轮廓将目标作为整体进行 ...

  9. 计算机视觉开源库OpenCV之绘制轮廓函数cv2.drawContours()介绍

    计算机视觉开源库OpenCV之绘制轮廓函数cv2.drawContours(),用于轮廓的绘制或填充. cv2.drawContours(image, contours, contourIdx, co ...

  10. 计算机视觉开源库OpenCV之查找轮廓函数cv2.findContours()介绍

    计算机视觉开源库OpenCV之查找轮廓函数cv2.findContours说明如下: 示例代码: #!/usr/bin/env python3import cv2image = cv2.imread( ...

最新文章

  1. CPU架构的llvm后端
  2. SEO中的DIV CSS样式的命名规则
  3. C语言 读取文件内容
  4. c语言流水灯小程序,流水灯小程序.doc
  5. Hudson Jameson将在柏林硬分叉后卸任以太坊基金会社区经理
  6. android gridview隐藏滚动条,如何禁用GridView中的ScrollViewer的滚动
  7. vc sleep不占进程_Python 中的进程深入
  8. Code Style of Mangata
  9. [Flutter] 一些面试可能会问基础知识
  10. java日期处理SimpleDateFormat等
  11. ubuntu锐捷校园网
  12. 关于echart 饼图显示不出来 挖坑总结
  13. 人脸识别服务器架构设计
  14. 线代——余子式和代数余子式
  15. 贝尔曼-福特算法(Bellman-Ford)
  16. 简述DDNS和DNS区别
  17. JavaSe复习笔记
  18. TIM定时中断(定时器介绍)
  19. 事件研究法——stata实现并购的超额回报率计算
  20. 数据中心编码命名标志标签的建议规范

热门文章

  1. 修复Edge浏览器无法登录微软账户问题
  2. 2021年流动式起重机司机免费试题及流动式起重机司机试题及解析
  3. 手机百度网页背景颜色设置_手机百度底色怎么变为黑色?
  4. 品牌零售号角吹响,开发B2C网站需要注意什么?
  5. 小建中汤与先天性结肠黑斑息肉
  6. android launcher目录,【 Android 10 系统启动 】系列 -- Launcher(应用门户)
  7. 光猫 高级NAT配置
  8. UVM实战 卷I学习笔记10——UVM中的寄存器模型(3)
  9. linux使用DEVICE_ATTR创建设备节点(常用)
  10. 如何用计算机模拟基金收益,[原创]中国股市十七年的基金计算机模拟