OpenCv заполнить пиксель одноканального изображения и показать его - PullRequest
1 голос
/ 01 апреля 2011

Я хочу заполнить черно-белое изображение и показать его.

Я не могу понять, что такое метр с этим кодом:

IplImage * imageOut;
int window = 100;

cvNamedWindow("mappa", CV_WINDOW_AUTOSIZE );
imageOut = cvCreateImage(cvSize(window,window),8,1);

    for(int i=0; i<window; i++){  
        for(int j=0; j<window;j++){

            ((unsigned char*)(imageOut->imageData + i*imageOut->widthStep))[j]= j;
        }
    }

    cvShowImage("mappa", imageOut );

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Правильная процедура будет:

imageOut = cvCreateImage(cvSize(window,window),IPL_DEPTH_8U,1);
int width = imageOut->width; 
int height = imageOut->height;
int bpp = imageOut->nChannels; 
for (int i=0; i < width*height*bpp; i+=bpp) 
{    
   imageOut->imageData[i] = i & 0xff;  // some casting might be needed here
}
0 голосов
/ 01 апреля 2011

При доступе к пикселю разве нельзя менять местами ваши координаты?
Таким образом, эта строка будет иметь вид:

((unsigned char*)(imageOut->imageData + j*imageOut->widthStep))[i]= j;
...