OpenCV findContours

本文通过一个具体的60x60像素图像示例详细介绍了如何使用OpenCV中的findContours函数来查找图像中的轮廓,并解释了CV_RETR_TREE检索模式下得到的轮廓向量和层级向量的具体内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCV findContours使用笔记
以下面60×60位图为例
示例图

Mat img(60, 60, CV_8UC1, Scalar(0));
rectangle(img, Point(20,20), Point(30,30), Scalar(255), 1);
rectangle(img, Point(30,20), Point(40,30), Scalar(255), 1);
rectangle(img, Point(23,23), Point(27,27), Scalar(255), 1);

使用CV_RETR_TREE

vector<vector<Point> > contours; vector<Vec4i> hierarchy; 
findContours(img, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE);

contours的5个元素输出为:
[20, 20] [20, 21] [20, 22] [20, 23] [20, 24] [20, 25] [20, 26] [20, 27] [20, 28] [20, 29] [20, 30] [21, 30] [22, 30] [23, 30] [24, 30] [25, 30] [26, 30] [27, 30] [28, 30] [29, 30] [30, 30] [31, 30] [32, 30] [33, 30] [34, 30] [35, 30] [36, 30] [37, 30] [38, 30] [39, 30] [40, 30] [40, 29] [40, 28] [40, 27] [40, 26] [40, 25] [40, 24] [40, 23] [40, 22] [40, 21] [40, 20] [39, 20] [38, 20] [37, 20] [36, 20] [35, 20] [34, 20] [33, 20] [32, 20] [31, 20] [30, 20] [29, 20] [28, 20] [27, 20] [26, 20] [25, 20] [24, 20] [23, 20] [22, 20] [21, 20]

[30, 21] [31, 20] [32, 20] [33, 20] [34, 20] [35, 20] [36, 20] [37, 20] [38, 20] [39, 20] [40, 21] [40, 22] [40, 23] [40, 24] [40, 25] [40, 26] [40, 27] [40, 28] [40, 29] [39, 30] [38, 30] [37, 30] [36, 30] [35, 30] [34, 30] [33, 30] [32, 30] [31, 30] [30, 29] [30, 28] [30, 27] [30, 26] [30, 25] [30, 24] [30, 23] [30, 22]

[20, 21] [21, 20] [22, 20] [23, 20] [24, 20] [25, 20] [26, 20] [27, 20] [28, 20] [29, 20] [30, 21] [30, 22] [30, 23] [30, 24] [30, 25] [30, 26] [30, 27] [30, 28] [30, 29] [29, 30] [28, 30] [27, 30] [26, 30] [25, 30] [24, 30] [23, 30] [22, 30] [21, 30] [20, 29] [20, 28] [20, 27] [20, 26] [20, 25] [20, 24] [20, 23] [20, 22]

[23, 23] [23, 24] [23, 25] [23, 26] [23, 27] [24, 27] [25, 27] [26, 27] [27, 27] [27, 26] [27, 25] [27, 24] [27, 23] [26, 23] [25, 23] [24, 23]

[23, 24] [24, 23] [25, 23] [26, 23] [27, 24] [27, 25] [27, 26] [26, 27] [25, 27] [24, 27] [23, 26] [23, 25]

hierarchy的5个元素输出为:
[-1, -1, 1, -1]
[2, -1, -1, 0]
[-1, 1, 3, 0]
[-1, -1, 4, 2]
[-1, -1, -1, 3]
hierarchy的元素类型是Vec4i,分别表示对应轮廓的后继轮廓、前趋轮廓、子轮廓、父轮廓的索引号,-1表示不存在。

contours后继轮廓前趋轮廓子轮廓父轮廓
0-1-11-1
12-1-10
2-1130
3-1-142
4-1-1-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值