我的循环哪里错了啊?
我想实现对picturebox.image中的图片提取边界坐标,我的想法是从图片的3/5高度处开始一行一行的扫描,因为我的图片是二值化后的,而且我只要图片的外边界,所以我想通过相邻两个像素颜色的不同来判定是否是边界坐标,然后将这个坐标的i,j值分别存于两个数组中,这两个数组的第一个值在全局中我都赋了0,然后开始扫描,因为我的图片是一个圆球放在桌子上,我想要圆球的边界坐标,所以我想直到有一点的j值小于上一行的j值作为判断依据退出循环;我这样编哪里错了,为什么会一直扫描到底,没有退出呢?而且为什么anglesurvey1[anglesurvey_i]直接就是图片高度。。。这是左边界检测的代码:
int[] anglesurvey1 = new int[1000];
int[] anglesurvey2 = new int[1000];
int[] anglesurvey3 = new int[1000];
int[] anglesurvey4 = new int[1000];
int anglesurvey_i = 1, anglesurvey_j = 1;
int anglesurvey1_i = 1, anglesurvey1_j = 1;
private void edgedetection_Click(object sender, EventArgs e)
{
Bitmap curBitmap=new Bitmap(pictureBox1.Image) ;
Color color1, color2;
for (int i = curBitmap.Height*3/5; i < curBitmap.Height; i++) //左边图形的检测
{
for (int j = 0; j < curBitmap.Width; j++)
{
color1 = curBitmap.GetPixel(i, j);
color2 = curBitmap.GetPixel(i, j + 1);
int mycolor1 = color1.R * 256 + color1.G * 256 + color1.B * 256;//
int mycolor2 = color2.R * 256 + color2.G * 256 + color2.B * 256;
if (mycolor1!= mycolor2)//判断这一行两相邻点是否颜色一致
{
anglesurvey2[0] = 0;//数组第一个值赋值为0
if (anglesurvey2[anglesurvey_j-1]<=j) //判断前一行像素j值是否比这一行的大,大则保留这个像素的i,j值
{
anglesurvey1[anglesurvey_i] = i; //将这一行的i值赋予数组anglesurvey1
anglesurvey2[anglesurvey_j] = j;//将这一行的j值赋予数组anglesurvey2
anglesurvey_i++;
anglesurvey_j++;
break;
}
else
{
break;
}
}
}
}