y + 1; Seeds[StackPoint].x = iCurrentPixelx; } } //判断右面的点,如果为黑,则压入堆栈 //注意防止越界 if(iCurrentPixelx < iWidth - 1) { //取得当前指针处的像素值,注意要转换为unsigned char型 pixel = (unsigned char)grey_liantong.GetPixel(iCurrentPixelx+1,iCurrentPixely); if (pixel == 0) { StackPoint++; Seeds[StackPoint].y = iCurrentPixely; Seeds[StackPoint].x = iCurrentPixelx + 1; } } //判断下面的点,如果为黑,则压入堆栈 //注意防止越界 if(iCurrentPixely > 1) { //取得当前指针处的像素值,注意要转换为unsigned char型 pixel = (unsigned char)grey_liantong.GetPixel(iCurrentPixelx,iCurrentPixely-1); if (pixel == 0) { StackPoint++; Seeds[StackPoint].y = iCurrentPixely - 1; Seeds[StackPoint].x = iCurrentPixelx; } } }//end while( StackPoint != 0) flag = (flag + 7)%251+1; //当前点连通区域标定后,改变标定值 }//end if }//end for(i }//end for(j //释放堆栈 delete Seeds; grey_res.Clone(grey_liantong);
推荐阅读:
|