1

白黒の画像を塗りつぶして表示したい。

このコードのメッターが何であるか理解できません:

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 );
4

2 に答える 2

0

ピクセルにアクセスするとき、座標を入れ替えるべきではありませんか?
したがって、この行は次のようになります。

((unsigned char*)(imageOut->imageData + j*imageOut->widthStep))[i]= j;
于 2011-04-01T10:06:47.117 に答える
0

The correct procedure would be:

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
}
于 2011-04-01T13:54:11.443 に答える