我正在尝试使用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);
}
输入图片: