void __fastcall CalCount(rgb_str rgb[DATA][DATA],int h,int w,TPoint pt,int &count,int &x0,int &y0,int &r)
{
int rd1=0,rd2=0,rd0=0,x1,y1,x2,y2;
int i,j;
count=0;
for(i=pt.x;i>5;i--)
{
rd1=abs((rgb[i][pt.y].r_color-rgb[i-1][pt.y].r_color));
rd2=abs((rgb[i-1][pt.y].r_color-rgb[i-2][pt.y].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x1=i-1;}
} //求左点;
rd0=0;
for(i=pt.x;i<w-5;i++)
{
rd1=abs((rgb[i][pt.y].r_color-rgb[i+1][pt.y].r_color));
rd2=abs((rgb[i+1][pt.y].r_color-rgb[i+2][pt.y].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x2=i+1;}
} //求右点;
x0=(x1+x2)/2; //求中点x;
rd0=0;
for(i=x0;i>5;i--)
{
rd1=abs((rgb[x0][i].r_color-rgb[x0][i-1].r_color));
rd2=abs((rgb[x0][i-1].r_color-rgb[x0][i-2].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;y1=i-1;}
} //求中点对应的上界点;
rd0=0;
for(i=x0;i<h-5;i++)
{
rd1=abs((rgb[x0][i].r_color-rgb[x0][i+1].r_color));
rd2=abs((rgb[x0][i+1].r_color-rgb[x0][i+2].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;y2=i+1;} //求中点对应的下界点;
} //求中点y;
y0=(y1+y2)/2; r=(y2-y1)/2;
rd0=0; //求蛋内点count;
for(i=x0;i>5;i--)
{
rd1=abs((rgb[i][y0].r_color-rgb[i-1][y0].r_color));
rd2=abs((rgb[i-1][y0].r_color-rgb[i-2][y0].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x1=i-1;}
}
r=r<(x0-x1)?r:(x0-x1); for(j=y1;j<=y2;j++)
{
rd0=0;
for(i=x0;i>5;i--)
{
rd1=abs((rgb[i][j].r_color-rgb[i-1][j].r_color));
rd2=abs((rgb[i-1][j].r_color-rgb[i-2][j].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x1=i-1;}
}
rd0=0;
for(i=x0;i<w-5;i++)
{
rd1=abs((rgb[i][j].r_color-rgb[i+1][j].r_color));
rd2=abs((rgb[i+1][j].r_color-rgb[i+2][j].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x2=i+1;}
}
count+=x2-x1;
}
}给一段代码!
{
int rd1=0,rd2=0,rd0=0,x1,y1,x2,y2;
int i,j;
count=0;
for(i=pt.x;i>5;i--)
{
rd1=abs((rgb[i][pt.y].r_color-rgb[i-1][pt.y].r_color));
rd2=abs((rgb[i-1][pt.y].r_color-rgb[i-2][pt.y].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x1=i-1;}
} //求左点;
rd0=0;
for(i=pt.x;i<w-5;i++)
{
rd1=abs((rgb[i][pt.y].r_color-rgb[i+1][pt.y].r_color));
rd2=abs((rgb[i+1][pt.y].r_color-rgb[i+2][pt.y].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x2=i+1;}
} //求右点;
x0=(x1+x2)/2; //求中点x;
rd0=0;
for(i=x0;i>5;i--)
{
rd1=abs((rgb[x0][i].r_color-rgb[x0][i-1].r_color));
rd2=abs((rgb[x0][i-1].r_color-rgb[x0][i-2].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;y1=i-1;}
} //求中点对应的上界点;
rd0=0;
for(i=x0;i<h-5;i++)
{
rd1=abs((rgb[x0][i].r_color-rgb[x0][i+1].r_color));
rd2=abs((rgb[x0][i+1].r_color-rgb[x0][i+2].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;y2=i+1;} //求中点对应的下界点;
} //求中点y;
y0=(y1+y2)/2; r=(y2-y1)/2;
rd0=0; //求蛋内点count;
for(i=x0;i>5;i--)
{
rd1=abs((rgb[i][y0].r_color-rgb[i-1][y0].r_color));
rd2=abs((rgb[i-1][y0].r_color-rgb[i-2][y0].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x1=i-1;}
}
r=r<(x0-x1)?r:(x0-x1); for(j=y1;j<=y2;j++)
{
rd0=0;
for(i=x0;i>5;i--)
{
rd1=abs((rgb[i][j].r_color-rgb[i-1][j].r_color));
rd2=abs((rgb[i-1][j].r_color-rgb[i-2][j].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x1=i-1;}
}
rd0=0;
for(i=x0;i<w-5;i++)
{
rd1=abs((rgb[i][j].r_color-rgb[i+1][j].r_color));
rd2=abs((rgb[i+1][j].r_color-rgb[i+2][j].r_color));
if(rd1<rd2&&rd2>rd0)
{ rd0=rd2;x2=i+1;}
}
count+=x2-x1;
}
}给一段代码!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货