清除链接边缘,可以使用数组进行递归运算。
同样可用于寻找连通域
void ClearEdge(CvMat* MM,CvPoint pStart,float value)//清除边缘函数
{
float m_value=value;
int xNum[8]={1,1,0,-1,-1,-1,0,1};
int yNum[8]={0,1,1,1,0,-1,-1,-1};
//亮点,使用数组取代条件查找。。。
CvPoint p;
int x=p.x=pStart.x;
int y=p.y=pStart.y;
for(int k=0 ;k<8 ;k++)
{
int yy=y + yNum[k];
int xx=x + xNum[k];
if (cvmGet(MM, yy ,xx)==m_value)
{
pStart.x=xx;
pStart.y=yy;
//该点设为边界点 //进行清除!!!设为白点
cvmSet( MM ,yy,xx,255.0);
//以该点为中心再进行跟踪
ClearEdge(MM,pStart,value);
//TraceEdge(yy,xx,nThrLow,pResult,pMag,sz);
}
}
}