for (int i = 0; i < imgThresh.rows; i++) { pSrc = imgThresh.ptr<uchar>(i); for (int j = 0; j < widthStep; j += nChannel) { if (pSrc[j] == 255) { bool isIn = false; for (int k = 0; k < b.size(); k++) { if (b[k].isInBlob(Point(j, i))) { b[k].Add(Point(j, i)); isIn = true; break; } } if (!isIn) { Blob n; n.Add(Point(j, i)); b.push_back(n); } } } }
时间: 2023-06-17 07:05:05 浏览: 43
这段代码是用于进行图像分割的,它的作用是将二值化后的图像分成若干个连通区域,每个连通区域被称为一个blob。这里使用了一个Blob类来描述每个blob,它包含了该blob的所有像素点的坐标。具体的实现过程是遍历整个二值化后的图像,如果某个像素点是白色(像素值为255),那么就检查该像素点是否属于已有的blob中的某个blob,如果是,则将该像素点加入到该blob中;如果不是,则创建一个新的blob,并将该像素点加入到该blob中,最终将所有blob存储到一个vector中返回。