标题:我的循环哪里错了啊?
取消只看楼主
hxt532084126
Rank: 1
等 级:新手上路
帖 子:34
专家分:5
注 册:2012-8-26
结帖率:78.57%
已结贴  问题点数:40 回复次数:1 
我的循环哪里错了啊?
我想实现对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;
                        }
                    }
                }
            }
搜索更多相关主题的帖子: 图片 而且 
2013-04-02 20:43
hxt532084126
Rank: 1
等 级:新手上路
帖 子:34
专家分:5
注 册:2012-8-26
得分:0 
回复 2楼 yhlvht
怎么加呀,我也想在第一个for循环中加break,但加不进去,没头绪啊没头绪...
2013-04-02 22:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-402910-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.141288 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved