9

私はすでにこの質問をしましたが、それは についてFreeImageでした。今、私は同じことをImageMagick(より正確には、でMagick++)しようとしています。

必要なのは、画像内のピクセルの RGB 値を取得して、画面に出力できるようにすることだけです。フォーラムで質問したのImageMagickですが、誰もいないようです。:-( 誰か助けてくれませんか?

4

2 に答える 2

14

バージョン 6 API

「 Image 」オブジェクトが与えられた場合、「 pixel cache 」をリクエストしてから操作する必要があります。ドキュメントはここここにあります:

// load an image
Magick::Image image("test.jpg");
int w = image.columns();
int h = image.rows();

// get a "pixel cache" for the entire image
Magick::PixelPacket *pixels = image.getPixels(0, 0, w, h);

// now you can access single pixels like a vector
int row = 0;
int column = 0;
Magick::Color color = pixels[w * row + column];

// if you make changes, don't forget to save them to the underlying image
pixels[0] = Magick::Color(255, 0, 0);
image.syncPixels();

// ...and maybe write the image to file.
image.write("test_modified.jpg");

バージョン 7 API

ピクセルへのアクセスはバージョン 7 で変更されました (移植を参照)。ただし、低レベルのアクセスは引き続き存在します。

MagickCore::Quantum *pixels = image.getPixels(0, 0, w, h);

int row = 0;
int column = 0;
unsigned offset = image.channels() * (w * row + column);
pixels[offset + 0] = 255; // red
pixels[offset + 1] = 0;   // green
pixels[offset + 2] = 0;   // blue
于 2012-03-06T11:49:54.013 に答える