我有一张黑白图像,我只想找到最右边黑色像素的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搜索结果,但似乎没有任何效果(即我可能搞砸了)
答案 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
我故意将细节遗漏,因为这似乎是一个家庭作业问题,而且你没有表现出任何努力。但是,这应该足以让你开始。