我试图使用OpenCV函数的活动轮廓算法 . 有一个名为 cvSnakeImage 的实现 . 但我在OpenCV文档中找不到一个例子 . 我找到了一个例子here . 我添加了一些行,我希望此代码对图像进行分段,但结果不是预期的 . 来自蛇法的点不动 .

我从这段代码编辑了一个函数 . 它在这里:

void AactiveSnake(IplImage* image)
{

points = (CvPoint*)cvAlloc(15*sizeof(CvPoint*));
int x,y;
for(int i = 0;i < 14 ; i++){    
    x = Xvalues[i];
    y = Yvalues[i];
    points[i].x = x;
    points[i].y = y;
}
cout << "AactiveSnake";
cvSnakeImage(image,points,15,&Alfa,&Beta,&Gamma,CV_VALUE,win,criteria,0);

IplImage* temp;
temp = cvCloneImage(imageRGB);
for(int i = 0;i < 14 ; i++){    
    x = points[i].x;
    y = points[i].y;
    Xvalues[i] = x;
    Yvalues[i] = y;
    cvCircle(temp,cvPoint(x,y),1,CV_RGB(255,0,0),-1);       
}
cout << "*\n";
cvShowImage( "Snake-Points", temp );
waitKey(0);

}

输入图片:

enter image description here