最右边的黑色像素

时间:2014-03-11 16:44:44

标签: c++ cimg

我有一张黑白图像,我只想找到最右边黑色像素的x位置,但我不知道该怎么办。任何帮助,将不胜感激。哦,我正在使用CImg和VC2008。

好吧,我觉得非常愚蠢,因为我没有意识到循环可以向后迭代。无论如何,这就是我现在拥有的。

int right_edge(CImg<unsigned char> bw)
{
    int width = bw.width();
    int height = bw.height();
    for( int i=height; i>0; i-- ){
        for( int j=width; j>0; j-- ){
            if( bw[j,i] == (0,0,0) )     //I know this line is the problem
                cout << j << endl;
            return 0;
        }
    }
}    

代码编译,但不按预期输出。我知道if语句的行格式错误。我已经尝试了大量的Google搜索结果,但似乎没有任何效果(即我可能搞砸了)

1 个答案:

答案 0 :(得分:3)

简单的伪代码算法:

for each column of pixels (starting from the rightmost column, moving left)
    for each row
        if this pixel is black
            return x coordinate of column

我故意将细节遗漏,因为这似乎是一个家庭作业问题,而且你没有表现出任何努力。但是,这应该足以让你开始。