一些基本知识
contours
被定义成二维浮点型向量,这里面将来会存储找到的边界的(x,y)坐标。vector<Vec4i>hierarchy
是定义的层级。这个在找边界findcontours
的时候会自动生成,这里只是给它开辟一个空间。将来findContours( src, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
就能算出边界的坐标,存在contours
里面。
typedef Vec<int, 4> Vec4i;
Vec4i
指的是四个整形数
膨胀:高亮区域增长(取局部MAX)
腐蚀:暗部地区增长(取局部MIN)
基于颜色跟踪实现步骤
inRange
过滤- 形态学操作提取
- 轮廓查找
- 外界矩形获取
- 位置标定
inRange()彩色图像分割
void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)
- src:输入图像,CV2常用Mat类型;
- lowerb:lower boundary下限,scalar类型的像素值,单通道scalar取一个值就行,彩图3通道scalar三个值;
- upperb:上限,类型与lowerb同理;
- dst:输出图像,尺寸与src一致,类型是CV_8U,但没有指定通道数。
- 对于多通道的输入,输出结果是各个通道的结果相与,当各通道结果都在上下限之内时,输出为