边界矩形的宽高比

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 np img = 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) & 0XFF
if 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])

最新文章

  1. 怎么定制属于自己的GitHub主页呢?
  2. AE IRasterCursor 改变栅格图层像素值
  3. PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析
  4. hadoop No FileSystem for scheme: hdfs
  5. java线程中生产者与消费者的问题
  6. java - 异常浅谈
  7. 初始seajs
  8. WPF程序长时间无人操作
  9. delphi用TAdoStoredProc调用存储过程,兼容sql2005、2008、2014的远程事务问题
  10. JavaScript链式调用
  11. ELement-UI之树形表格(treeTable&&treeGrid)
  12. ArcGIS AddIn 批量设置栅格图层背景色为透明
  13. Java中锁的实现与内存语义
  14. C语言程序设计II—第五周教学
  15. NodeJs中npm使用
  16. T-SQL 局部变量和全局变量
  17. C++STL 容器比较
  18. Python2.7.14安装和pip配置安装及虚拟环境搭建
  19. #import同@class之间的区别
  20. ASCII码表(0-127 ) C中的转义字符

热门文章

  1. Java UDP发送与接收
  2. https://www.jianshu.com/p/fc78dab5736f
  3. SSH限制与更改端口、限制ROOT方式登录
  4. pytorch 自动求梯度
  5. idea拉取git项目并创建为maven项目(新创建github项目)
  6. Fidder IOS抓包
  7. JavaScript—面向对象 贪吃蛇_2 游戏对象
  8. OpenMP笔记(四)
  9. h5-背景样式
  10. CMake命令之install