トップページ > コンテナとイテレータ >
#include <iostream>
#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/png_io.hpp>
using namespace std;
using namespace boost::gil;
// RGB の G 成分だけ残してみる
rgb8_pixel_t g(rgb8_pixel_t p)
{
return rgb8_pixel_t( 0, at_c<1>(p), 0 );
}
int main()
{
// pngファイル読み込み
rgb8_image_t src;
png_read_image("graph.png", src);
// (100,100)-(300,300)を取り出して g で変換
rgb8_image_t dst( 200, 200 );
transform_pixels( subimage_view(view(src),100,100,200,200), view(dst), &g );
// pngファイル書き込み
png_write_view("result.png", view(dst) );
}
入力(Boost.Graph の説明に使ったもの):
出力:
Photoshop や Illustrator で有名な Adobe 社からオープンソースライブラリとしてリリースされ、 Boost に取り込まれたのがこの GIL (Generic Image Library) です。
GIL そのものは、 ピクセル形式を抽象化して汎用アルゴリズムを「書く」ための かなりローレベルなライブラリで、便利な出来合いのアルゴリズム詰め合わせ!といった類の ものではありません。プロ向けです。プロの解説が待たれるところです。 どなたかお願いします。
Adobe Open Source のダウンロードページ で公開されている numeric.zip には幾つか簡単なアルゴリズムが含まれています。 また、上記ダウンロードページに書かれているとおり、 画像の読み書き(jpeg, png, tiff に対応)にはそれぞれ libjpeg, libpng, libtiff が必要です。