Ошибка в обработке кода - PullRequest
       14

Ошибка в обработке кода

0 голосов
/ 19 марта 2011

Применение следующего кода для преобразования из изображения в градациях серого в пороговое значение, но на выходе получится полная черная картина, если это так:

PImage toThreshhold(PImage sourcePic)
{
    PImage thresh = new PImage(sourcePic.width,sourcePic.height);

    sourcePic.loadPixels(); 
    for(int i = 0; i < sourcePic.width; i++)
    {
        for(int j = 0; j<sourcePic.height; j++)
        {
            int pixPosition = i*sourcePic.width +j; 
            if(sourcePic.pixels[pixPosition] > 127)
            {
                sourcePic.pixels[pixPosition] = color(255);
            }
            else
            {
                sourcePic.pixels[pixPosition] = color(0);
            }
        }
    }
    sourcePic.updatePixels();

    return thresh;
}

Ответы [ 2 ]

0 голосов
/ 20 марта 2011

Какой это язык? C или C ++? А что такое loadPixels () и updatePixels ()?

Вы, вероятно, хотите int pixPosition = j*sourcePic.width +i;

0 голосов
/ 19 марта 2011
int pixPosition = i*t.width +j; 

неправильно. Должно быть

int pixPosition = i*t.height +j; 

и вы не изменяете треш в любом случае. Это должно быть хорошо:

thresh = sourcePic;
thresh.loadPixels(); 
for(int i = 0; i < t.width; i++)
{
    for(int j = 0; j<t.height; j++)
    {
        int pixPosition = i*t.height +j; 
        if(thresh.pixels[pixPosition] > 127)
        {
            thresh.pixels[pixPosition] = color(255);
        }
        else
        {
            thresh.pixels[pixPosition] = color(0);
        }
    }
}
thresh.updatePixels();

return thresh;
...