【Contour】
1)轮廓是什么?
沿着图像边缘连接起来的一个曲线
2)如何找到轮廓?如何在图片上把轮廓画出来?
调用函数cv2.findContours()
(代码:L11_contour>simple_contour())
3)如何生成轮廓的遮罩?
图上有多个图形,但是只想得到其中一个图的轮廓
①生成一个与图像背景,大小相同,颜色相同的背景色,比如黑色
②画出轮廓
③用前景色,填充轮廓内的
(代码:simple_contour_mask())
4)轮廓的简单性质:及实现函数
centroid轮廓的中心;cv2.circle()
area面积:轮廓包含像素点的个数;
perimeter:轮廓的周长;cv2.arcLength()
boundingbox:包含轮廓的外接框;cv2.boundingRect()
求最小面积的矩形minAreaRect()
minimum enclosing circles:包含轮廓的最小外接圆;
cv2.minEnclosingCircle()
(代码:blue_obj_track.py>>track_obj_fit_circle())
fitting a ellipse:包含这个轮廓的一个椭圆
5)高级的Advanced轮廓Contour属性properties:
√用于:捕获人脸,不同事物的特征
√aspect ratio,extent,
√convex hull凸包轮廓:由轮廓的部分点连成的形状,
√solidity=contour area/conve hull area
6)ConvexHull凸包
凸包convex图形:①没有一个角>180°
②边缘上任意两点的连线都在图形内部
非凸包Concave
使用函数:cv2.convexHull(points [,clockwise [,returnPoints]])
points:点集;
clockwise:点的顺序,顺时针false还是逆时针ture;
returnPoints:返回的点集是坐标true还是序号false;
(代码:convexHull01》test1)
凸包应用:①检测车子碰撞 ②人脸变化
7)ConnectedComponents联通度 的一个分析
#connectivity=4,四联通度:检查上下左右是否有相同的
#connectivity=8,八联通度:比较上下左右,左上右上,左下右下