0

右側の部分のみが表示され、残りの画像は灰色のみであるため、反転で問題が発生しました。

![Lena FLipped][1]    

Image *im2 = new Image();
im2->CloneImage(image);

unsigned int sizeX = im2->GetSizeX();
unsigned int sizeY = im2->GetSizeY();

for(int x = 0; x < sizeX/2;x++){
   for(int y = 0;y < sizeY;y++ ){

       Image::PixelType pix = im2->GetPixel(x,y);
       im2->SetPixel(x,y,sizeX-x-1);
       im2->SetPixel(sizeX-x-1,y,pix);
   }
}
ImageIO::Write( "flip.pgm", im2 );
4

3 に答える 3

1
im2->SetPixel(x,y,sizeX-x-1);

は間違っています。代わりに色を設定する必要があります。

Image::PixelType pix1 = im2->GetPixel(x,y);
Image::PixelType pix2 = im2->GetPixel(sizeX-x-1,y);
im2->SetPixel(x,y,pix2);
im2->SetPixel(sizeX-x-1,y,pix1);
于 2012-10-30T12:24:27.817 に答える
0

値を上書きするだけでなく、2 つのピクセルを完全に交換する必要があります。グレーは次の行から来ています。

im2->SetPixel(x,y,sizeX-x-1);

2 つの x 座標を指定し、ピクセル値を指定しない場合。修正されたループ:

for(int x = 0; x < sizeX/2;x++){
   for(int y = 0;y < sizeY;y++ ){

       Image::PixelType pix = im2->GetPixel(x,y);
       im2->SetPixel(x,y,im2->GetPixel(sizeX-x-1,y));
       im2->SetPixel(sizeX-x-1,y,pix);
   }
}
于 2012-10-30T12:23:59.363 に答える
0

これらの行で何をしていますか:

   Image::PixelType pix = im2->GetPixel(x,y);
   im2->SetPixel(x,y,sizeX-x-1);
   im2->SetPixel(sizeX-x-1,y,pix);

両方のピクセル値を記憶してから、それらを交換する必要があります。ピクセルを に設定するアイデアは何sizeX - x - 1ですか?

于 2012-10-30T12:24:03.720 に答える