Крайний правый черный пиксель
У меня есть черно-белое изображение, и меня интересует только нахождение позиции 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 ответ
Простой алгоритм psuedocode:
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
Я намеренно опускаю подробности, так как это кажется домашним заданием, и с вашей стороны не было предпринято никаких усилий. Но этого должно быть достаточно, чтобы вы начали.