void leastSquareLinearFit( imginfo *img,uchar *res,int *x ,int *y,int n){
int height=img->height;
int width=img->width;
printf("height=%d ,width=%d \r\n",height,width);
int i,j;
memset(res,0,sizeof(uchar)*1000*1000);
int l=0,m=0;
double a=0,b=0;
for(i=0;i<n;i++){
l=*(x+i)+width/2-50;
m=*(y+i)+height/2-50;
*(res+l+m*width)=128;
}
long sum_x=0,sum_y=0,sum_xy=0,sum_xx=0;
for(i=0;i<n;i++)
{
sum_x+=*(x+i);
sum_y+=*(y+i);
sum_xy+=(*(x+i))*(*(y+i));
sum_xx+=(*(x+i))*(*(x+i));
}
printf("sum_x=%d,sum_y=%d,sum_xy=%d,sum_xx=%d \r\n",sum_x,sum_y,sum_xy,sum_xx);
a=((sum_xx)*(sum_y)-(sum_x)*(sum_xy))/(n*(sum_xx)-sum_x*sum_x);//套用公式
b=(n*sum_xy-sum_x*sum_y)/(n*sum_xx-sum_x*sum_x);
printf("a=%f,b=%f \r\n",a,b);
int yy=0;
for(i=0;i<n;i++){
yy= b*(*(x+i))+a;
l=*(x+i)+width/2-50;
m=yy+height/2-50;
*(res+l+m*width)=255;
}
}
原图 结果