图像轮廊二

凸包的概念

逼近多边形是轮廊的高度相似,但是有时候,我们希望使用一个多边形的凸包来简化它,凸包跟逼近多边形很相似,只不过它是物体最外层的“凸”多边形。凸包指的是完全包含原有轮廊,并且仅有轮廊上的点所构成的多边形。凸包的每一处都是凸的,即在凸包内连接任意两点的直线都在凸包的内部。在凸包内,任意连接三个点的内角小于180°
1.使用cv2.convexHull()函数,实现图像轮廓凸包的获取。
2.使用cv2.polylines()函数,实现图像轮廓凸包的绘制。

凸包的绘制

cv2.polylines(src, [points], isClosed,color, thickness)
src:要处理的图像。
points:点集。
isClosed:布尔型,True表示的是线段闭合,False表示的是仅保留线段。
color:线段颜色,格式是(B,G,R)值。
thickness:数值型,厚度,默认值为1,如果对封闭图形,正方形,三角形等传入-1,则会填充整个图形。
图像轮廊二_第1张图片

实物凸包检测

图像轮廊二_第2张图片图像轮廊二_第3张图片

凸缺陷的概念

凸包与轮廓之间的部分,称为凸缺陷。轮廓上距离这条线最远的
点就是凸缺陷的点。
convexityDefects = cv2.convexityDefects(contour, convexhull)
contour:轮廓。
convexhull:凸包.
图像轮廊二_第4张图片

实物凸缺陷检测

图像轮廊二_第5张图片图像轮廊二_第6张图片

宽高比

可以使用宽高比(AspectRation)来描述轮廓,例如矩形轮廓的宽高比为:
宽高比=宽度(Width)/高度(Height)
图像轮廊二_第7张图片图像轮廊二_第8张图片

Extent

可以使用轮廓面积与矩形边界(矩形包围框、矩形轮廓)面积之比Extend来描述图像及其轮廓特征。计算方法为:
Extend =轮廓面积/矩形边界面积
图像轮廊二_第9张图片图像轮廊二_第10张图片

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

OpenCV提供了函数cv2.minMaxLoc(),用于在指定的对象内查找最大值、最小值及其位置。该函数的语法格式是:
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(imgray,
mask = mask)
min_val:最小值。
max_val:最大值。
min_loc:最小值的位置。
max_loc:最大值的位置。
OpenCV提供了函数cv2.mean(),用于计算一个对象的平均颜色或
平均灰度。该函数的语法格式为:
mean_val = cv2.mean(im, mask = mask)
im:原图像。
mask:掩模。
图像轮廊二_第11张图片图像轮廊二_第12张图片

平均颜色及平均灰度

图像轮廊二_第13张图片

极点

有时,我们希望获取某个对象内的极值点,例如最左端、最右端、
最上端、最下端的四个点。OpenCV提供了相应的函数来找出这些
点,通常的语法格式是:
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])
图像轮廊二_第14张图片图像轮廊二_第15张图片

轮廓特征值的应用场景

图像轮廊二_第16张图片
案例1
图像轮廊二_第17张图片图像轮廊二_第18张图片案例2
图像轮廊二_第19张图片图像轮廊二_第20张图片

计数

图像轮廊二_第21张图片图像轮廊二_第22张图片

你可能感兴趣的:(OpenCV,opencv)