GenEmptyObj(&ho_EdgeRegions);
ho_EdgeRegions.Clear();
SelectShape(ho_ConnectedRegions, &ho_SelectedRegions2, "area", "and", m_checkMinArea, m_maxDefectArea);
AreaCenter(ho_SelectedRegions2, &Areas, &Rows, &Cols);
for (int i = 0; i < Areas.Length(); i++)
{
double d1 = Rows[i] - centerR_ho_checkReg;
double d2 = Cols[i] - centerC_ho_checkReg;
if (d1 * d1 + d2 * d2 > m_outerRadius * m_outerRadius)
{
SelectObj(ho_SelectedRegions2, &ho_EdgeRegions, i + 1);
}
}
CountObj(ho_EdgeRegions, &hv_Number2);//报错
是的,调用clear()
方法之后,Region
对象的区域数据被清空,指针被设置为NULL
。如果需要继续使用这个区域对象,需要重新进行初始化。
初始化可以使用GenEmptyRegion()
函数或其他适当的函数来创建一个新的空区域对象。然后可以使用其他函数为这个新的区域对象赋予新的区域信息。
示例代码如下:
复制HRegion ho_EdgeRegions;
// 初始化ho_EdgeRegions对象,例如使用GenEmptyRegion()或其他方法
// 在需要清空并重新初始化之后,可以调用下面的代码
ho_EdgeRegions.clear();
ho_EdgeRegions = GenEmptyRegion();
// 对ho_EdgeRegions赋值新的区域数据,例如使用GenRectangle()、GenCircle()等函数
请注意,在重新初始化之前,确保清空的区域数据不再需要,并且不会导致内存泄露或其他潜在问题。