1:轮廓检测的基本流程
图像灰度化图像二值化或边缘检测轮廓检测
2:轮廓特征
轮廓矩,面积,周长等
3:轮廓近似、凸包
轮廓近似:设置精度,对原轮廓进行多边形近似。
凸包:相当于获取外交多边形。
4:外接矩形
这里有两种,常规外接矩形 和 最小外接矩形(有旋转角度)。
5:最小外接圆
6:拟合椭圆
7:轮廓的常用属性
https://docs.opencv.org/4.4.0/d1/d32/tutorial_py_contour_properties.html
8:判断点与轮廓的位置关系
dist = cv.pointPolygonTest(cnt,(50,50),True)
第三个参数是True则返回的是点到轮廓的距离,负数表示点在轮廓外,正数表示点在轮廓内,0表示点在轮廓上;False则表示点是否在轮廓内外或上。
9:轮廓匹配
dis= cv.matchShapes(cnt1,cnt2,1,0.0)
基于hu矩计算两个轮廓的距离,越小越相似。
10:轮廓提取方式
cv2.RETR_EXTERNAL - 只提取最外层的轮廓
cv2.RETR_LIST - 提取所有轮廓,并且放置在 list 中
cv2.RETR_CCOMP - 提取所有轮廓,并且将其组织为两层的 hierarchy: 顶层为连通域的外围边界,次层为洞的内层边界。
cv2.RETR_TREE - 提取所有轮廓,并且重构嵌套轮廓的全部 hierarchy
11:轮廓点存储方式
cv2.CHAIN_CODE - Freeman 链码的输出轮廓. 其它方法输出多边形(定点序列).
cv2.CHAIN_APPROX_NONE - 将所有点由链码形式翻译(转化)为点序列形式
cv2.CHAIN_APPROX_SIMPLE - 压缩水平、垂直和对角分割,即函数只保留末端的像素点;
cv2.CHAIN_APPROX_TC89_L1,
cv2.CHAIN_APPROX_TC89_KCOS - 应用 Teh-Chin 链逼近算法. CV_LINK_RUNS - 通过连接为 1 的水平碎片使用完全不同的轮廓提取算法。仅有 CV_RETR_LIST 提取模式可以在本方法中应用.
领取专属 10元无门槛券
私享最新 技术干货