根据轮廓的位置调整正极点的位置

来源:互联网 发布:编写程序的软件 编辑:程序博客网 时间:2024/05/01 13:01
int sumanodex=0,sumcathodex=0,s;
float meananodex,meancathodex;
int anodex1,cathodex1;
int cathodedis,meandis;
int anodex,cathodex;
float disanode;
vector<CvPoint> borderpoint;
int sizeborderpoint;
int minanodex=500,maxanodex=0;
float dis1,dis2;
int pointflag;
int anodefirsty=anode[0].y;
int anodefirstx=anode[0].x;
int anodelastx=anode[size-1].x;

for (s=0;s<ROIContourPoints.size();s++)

{

if (ROIContourPoints[s].y==anodefirsty)
{
borderpoint.push_back(cvPoint(ROIContourPoints[s].x,ROIContourPoints[s].y));
}
}
for (s=0;s<borderpoint.size();s++)
{
if (borderpoint[s].x<minanodex)
{
minanodex=borderpoint[s].x;
}
if (borderpoint[s].x>maxanodex)
{
maxanodex=borderpoint[s].x;
}
}
if (minanodex-anodefirstx>20&&abs(anodefirstx)>20)
{
minanodex=anodefirstx-abs(anode[12].x-anode[4].x)/8;
}
if (maxanodex-anodelastx>20&&abs(anodelastx)<290)
{
maxanodex=anodelastx+abs(anode[20].x-anode[15].x)/5;
}
disanode=abs(maxanodex-minanodex);   

meananodex=disanode/size;

for (s=0;s<anode.size()-1;s++)

{
dis1=anode[s].x;
dis2=anode[s+1].x;
if (dis2-dis1>3*meananodex)
{
pointflag=s;
}
}

if (anodefirstx<0&&minanodex>0)
{
anodefirstx=-anodefirstx;
}
if (pointflag>0&&anodefirstx<minanodex&&pointflag<size-7)
{
for (s=0;s<=pointflag;s++)
{
 anode[s].x=anode[s].x+(2+s)*meananodex;
}
}
原创粉丝点击