使用rle编码运算
#include <vector>
#include <unordered_map>
#include <algorithm>
#include <iostream>
// 定义 RLE (Run Length Encoding) 结构体
struct RLE {
int row; // 行号
int startCol; // 起始列
int runLength; // 连续像素长度
};
// 并查集 (Union-Find) 类
class UnionFind {
public:
std::vector<int> parent;
// 初始化并查集,设定每个元素的父节点为自己
UnionFind(int size) {
parent.resize(size);
for (int i = 0; i < size; ++i) {
parent[i] = i;
}
}
// 查找并查集的根节点,并进行路径压缩
int find(int x) {
if (parent[x] != x) {
parent[x] = find(parent[x]);
}
return parent[x];
}
// 合并两个元素所在的集合
void unite(int x, int y) {
int rootX = find(x);
int rootY = find(y);
if (rootX != rootY) {
parent[rootX] = rootY;
}
}
};
// 计算连通域并返回统计信息(标签、面积、边界框、质心等)
v