Opencv笔记(十七)——轮廓性质
2024-09-03 22:48:18
边界矩形的宽高比
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])
最新文章
- 怎么定制属于自己的GitHub主页呢?
- AE IRasterCursor 改变栅格图层像素值
- PHPCMS \phpcms\modules\member\index.php 用户登陆SQL注入漏洞分析
- hadoop No FileSystem for scheme: hdfs
- java线程中生产者与消费者的问题
- java - 异常浅谈
- 初始seajs
- WPF程序长时间无人操作
- delphi用TAdoStoredProc调用存储过程,兼容sql2005、2008、2014的远程事务问题
- JavaScript链式调用
- ELement-UI之树形表格(treeTable&;&;treeGrid)
- ArcGIS AddIn 批量设置栅格图层背景色为透明
- Java中锁的实现与内存语义
- C语言程序设计II—第五周教学
- NodeJs中npm使用
- T-SQL 局部变量和全局变量
- C++STL 容器比较
- Python2.7.14安装和pip配置安装及虚拟环境搭建
- #import同@class之间的区别
- ASCII码表(0-127 ) C中的转义字符