目录
1 .Canny边缘检测
1.1 Canny边缘检测基础
1.去噪
2.计算梯度的幅值与方向
3.非极大值抑制
4.确定边缘
2.图像金字塔
2.1 pyDown函数及使用
2.2 pyrUp函数及使用
2.3 拉普拉斯金字塔
3.图像轮廓
3.1 查找并绘制轮廓
3.2矩特征
3.2.1 矩的计算:moment函数
3.2.2 计算轮廓的面积:contourArea函数
3.2.3 计算轮廓的长度:arcLength函数
3.3 Hu矩
3.3.1 形状匹配
3.4 轮廓拟合
cv.drawcContours()
cv.rectangle()
3.4.1 最小包围矩形框
retval=cv.minAreaRect(point)
. retval(最小外接矩形的中心(x,y),(宽度,高度),旋转角)。
. point是轮廓
函数cv.boxPoints()能够将上述返回值retval转换为符合cv.drawContours()要求的结构。
3.4.2 最小包围圆形
center,radius =cv.minEnclosingCircle(points)
. center是最小包围圆形的中心
. radius是最小包围圆形的半径
. points是轮廓
3.4.3 最优拟合椭圆
retval =cv.fitEllipse(points)
3.3.4 最优拟合直线
3.3.5 最小外包三角形
retval,triangle=cv.minEnclosingTriangle(points)
. retval:最小外包三角形的面积
. triangle:最小外包三角形的三个顶点集
. points是轮廓
3.3.6 逼近多边形
approxCurve=cv.approxPolyDP(curve,epsilon,closed)
. curve是轮廓
. epsilon为精度,原始轮廓的边界点与逼近多边形边界之间的最大距离
. closed是布尔型值。该值为True时,逼近多边形是封闭的;否则,逼近多边形是不封闭的
. approxCurve为逼近多边形的点集
3.4 凸包
hull =cv.convexHull(points,clockwise,returnPoints)
. hull为凸包角点
. points:轮廓
. clockwise:布尔型值。True,凸包角点将按顺时针方向排列;False,则以逆时针方向排列凸包角点。
. returnPoints:布尔型值。默认是True,函数返回凸包角点的x/y轴坐标;当为False时,函数返回轮廓中凸包角点的索引。
3.4.1 凸缺陷
convexityDefencts =cv.convexityDefects(contour,convexhull)
. contour是轮廓
. convexhull是凸包
. convexityDefects为凸缺陷点集,【起点,终点,轮廓上距离凸包最远的点,最远点到凸包的近似距离】
3.4.2 几何学测试
1.测试轮廓是否是凸形的
retval=cv.isContourConvex(contour)
. retval 是布尔型值。True,表示轮廓为凸形的,否则,不是凸形
. contour为要判断的轮廓
2. 点到轮廓的距离
retval =cv.pointPolygonTest(contour,pt,measureDist)
. contour为轮廓
. pt为待判定的点
. measureDist为布尔型值,表示距离的判定方式
. Ture,表示计算点到轮廓的距离。如果点在轮廓的外部,返回值为负数;如果点在轮廓上,返回值为0;如果点在轮廓内部,返回值为正数。
. False,不计算距离,只返回“-1”,“0”,“1”