ReadImage(&ho_Image, "D:/bb/tu/8.jpg");
GetImageSize(ho_Image, &hv_Width, &hv_Height);
Regiongrowing(ho_Image, &ho_Regions, 1, 1, 3, 1000);
//区域增长法分割图像为区域
//此方法分割的区域可能有重叠
//参数1:输入图像
//参数2:分割后的输出区域
//参数3Row和参数4Col :定义了在图像内相邻移动的模板的长和宽度大小
//参数5:两个相邻模板中心灰度值差,如果小于这个值就合并为同一区域
//参数6:作为一个限制,限定了用上面方法分割出的区域面积最终不能小于MinSize给定的值,否则不作为区域输出
GenEmptyRegion(&ho_NoPixel);
//创建一个空区域
//count_obj返回1 这个区域的面积是0。
ExpandRegion(ho_Regions, ho_NoPixel, &ho_RegionExpanded1, "maximal", "image");
//填充区域之间的间隙或分割重叠区域
//参数1:Regions要膨胀的区域
// 如果是区域:不执行膨胀,而是只分割重叠区域,将重叠区域均匀地分布到各个区域里。
// 因为与原区域的交集是在收缩操作后计算出来的,因此可能会导致输出区域出现间隙。
// 这可以通过第二次调用expand_region来防止,并将原始区域的补集作为ForbiddenArea
//参数2:ForbiddenArea禁止膨胀的区域
//参数3:RegionExpanded1膨胀后结果区域
//参数4:迭代次数
// 默认值: 'maximal' 函数一直执行直到不可膨胀
// 建议值: 'maximal',0,1,2,3,5,7,10,15,20,30,50,70,100,200
// 传递0的话,返回未重叠的全部区域
// 典型值范围:0≤ Iterations≤ 1000
//参数5:扩展模式
// 'image' 目的是填充区域之间的间隙,输入区域将迭代地膨胀,直到它们触及另一个区域或图像边缘
// 'region' 目的是分割重叠区域
if (HDevWindowStack::IsOpen())
SetColored(HDevWindowStack::GetActive(),10);
//设置输出颜色的数量
SetWindowAttr("background_color","black");
OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle);
HDevWindowStack::Push(hv_WindowHandle);
if (HDevWindowStack::IsOpen())
DispObj(ho_RegionExpanded1, HDevWindowStack::GetActive());