图像轮廓与边缘的区别:边缘是不连续的,轮廓是连续的,将边缘连接起来,就能构成轮廓。
图像轮廓的绘制需要用到两个函数:cv2.findContours()和cv2.drawContours()
res,contours,hierarchy = cv2.findContours(image,mode,method)
- res:处理后的图像
- contours:返回的轮廓数组,每个轮廓由一条曲线(一系列坐标)构成
- hierarchy:图像的拓扑信息(轮廓层次)
- image:需要处理的图像,此处必须为二值图像
- mode:轮廓检索模式
- cv2.RETR_EXTERNAL:只检测外轮廓
- cv2.RETR_LIST:检测的轮廓不建立等级关系
- cv2.RETR_CCOMP:建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。
- cv2.RETR_TREE:建立一个等级树结构的轮廓,常用这个方法。
- method:轮廓的保存方法
- cv2.CHAIN_APPROX_NONE:保存所有的轮廓点
- cv2.CHAIN_APPROX_SIMPLE:压缩水平方向,垂直方向,对角线方向的元素,只保存某个方向上的两个点(可以简单理解为只保存一条线段上的两点),常用这个方法。
- cv2.CHAIN_APPROX_TC89_L1:使用 teh-Chinl chain近似算法(暂不明)
- cv2.CHAIN_APPROX_TC89_KCOS:使用 teh-Chinl chain近似算法(暂不明)<