c# opencv 轮廓检测_opencv教程-轮廓检测

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 提取模式可以在本方法中应用.

你可能感兴趣的:(c#,opencv,轮廓检测)