#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <map>
#include <cassert>
#include <iostream>
using namespace std;
using namespace cv;
const int max_size = 1000;
int parent[max_size] = {0};
// 找到label x的根节点
int find(int x, int parent[]){
assert(x < max_size);
int i = x;
while(0 != parent[i])
i = parent[i];
return i;
}
// 将label x 和 label y合并到同一个连通域
void union_label(int x, int y, int parent[]){
assert(x < max_size && y < max_size);
int i = x;
int j = y;
while(0 != parent[i])
i = parent[i];
while(0 != parent[j])
j = parent[j];
if(i != j)
parent[i] = j;
}
void myConnectedComponentLabelingTwoPass(
Mat& binary, Mat& label){
CV_Assert(binary.data);
CV_Assert(binary.depth() == CV_8U);
CV_Assert(binary.channels() == 1);
// create label image
label.create(binary.size(),
TWO-PASS连通域标记实现
最新推荐文章于 2024-04-03 15:33:05 发布
本文介绍了计算机视觉中的两步法连通域标记技术,详细阐述了该方法的原理和步骤,参考了Shapiro和Stockman的经典著作《Computer Vision》中的相关内容,并结合了CSdn博主的实践经验。
摘要由CSDN通过智能技术生成