引用———“关于图像分割Snake算法(c#)的一些不解之惑,望大神指点:我手头有一个别人的代码,是winform程序,其中包含了两个类,分别是FormSnake.cs和SnakeSharp.cs在FormSnake类中的鼠标事件里,用了一个动态数组presetContour来记录鼠标每次每次停留位置的坐标,在SnakeSarp中也定义一个数组snakePoints,我的问题是:presetContour里面是肯定有数据的,而snakePoints是怎么得到这些数据的。我把两个类的代码都放上来,请明白的前辈指点一下。”
1、在FormSnake.cs中
private void splitContainer1_Panel1_MouseUp(object sender, MouseEventArgs e)
{
if (isMouseDown)
{
isDrawingContour = false;
isMouseDown = false;
buttonSetContour.Enabled = true;
buttonStart.Enabled = true;
buttonStep.Enabled = true;
graphics = Graphics.FromImage(curImage);
Pen p = new Pen(Color.Green);
if (presetContour.Count > 1)
{
graphics.DrawLine(p, presetContour[0], presetContour[presetContour.Count - 1]);
}
graphics.Save();
mainContainer.Panel1.Refresh();
textBoxInfo.AppendText("\r\n边界设定完毕,共设定" + presetContour.Count + "个点。");
if (snakeSharp != null)
{
snakeSharp.SetCurcePoints(presetContour);//传递设置的边界点
}
}
}
2、在SnakeSharp.cs中
public void SetCurcePoints(List<Point> pos) { //定义参数 snakePoints = new CurvePoint[pos.Count]; for (int i = 0; i < pos.Count;i++ ) { snakePoints[i] = new CurvePoint(pos[i]); } threshold_curvature = 0.2;//曲率阈值 threshold_grad = 100;//梯度阈值 pointsMovedThreshold = SnakePointsCount / 10; }
3、
presetCountour中的内容即可传递到snakePoints[ ]里
4、
具体程序见于https://yq.aliyun.com/wenzhang/show_1680
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37899.html