6 Aralık 2017 Çarşamba

gil

Giriş
Şu satırı dahil ederiz.
#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/png_dynamic_io.hpp>
Şu satırı dahil ederiz.
using namespace boost::gil;
png ile çalışabilmek için LibPng yüklü olmalıdır. LibPng için sanırım şu tanımlamaları yapmak gerekiyor.
#define png_infopp_NULL (png_infopp)NULL
#define int_p_NULL (int*)NULL

rgb8_image_t Sınıfı
dimensions metodu
Şöyle yaparız
#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/png_io.hpp>

namespace gil = boost::gil;

using Img = gil::rgba8_image_t;
using Pix = Img::value_type;
Img a, b;
gil::png_read_image("/tmp/a.png", a);
gil::png_read_image("/tmp/b.png", b);

assert(a.dimensions() == b.dimensions());
Img c(a.dimensions());
height metodu
Şöyle yaparız
gil::rgb8_image_t img = ...;
int width = static_cast<int> (img.height());
width metodu
Şöyle yaparız
gil::rgb8_image_t img = ...;
int width = static_cast<int> (img.width());

Free Style Metodlar
copy_pixels metodu
img1'in belli bir alanını out_img nesnesin kopyalamak için şöyle yaparız. vie() çağrısı ile stream aldığımızı düşünelim. subimage_view ile hedef resmin hangi alanına kopyalayacağımızı belirtiriz.
rgb8_image_t out_img(512, 512);
rgb8_image_t img1;

png_read_image("img1.png", img1);//Code for loading img1

copy_pixels(view(img1), subimage_view(view(out_img), 0, 0, 50, 50)); 
interleaved_view metodu
Şöyle yaparız
gil::rgb8_image_t img = ...;

int    _width = static_cast<int>(img.width());
int    _height = static_cast<int>(img.height());

typedef decltype(img)::value_type pixel;

auto pixeldata = new pixel[_width * _height];

auto dstView = gil::interleaved_view(
  img.width(), img.height(), pixeldata, img.width() * sizeof pixel);
jpeg_read_and_convert_image
Şöyle yaparız
std::str path = ...;
gil::rgb8_image_t img;
gil::jpeg_read_and_convert_image (path, img);
png_read_and_convert_image metodu
Şöyle yaparız
std::str path = ...;
gil::rgb8_image_t img;
gil::png_read_and_convert_image (path, img);
png_read_image metodu
Örnek
Şöyle yaparız.
rgb8_image_t img1;
png_read_image("img1.png", img1);//Code for loading img1
Örnek
Şöyle yaparız
#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/png_io.hpp>

namespace gil = boost::gil;

using Img = gil::rgba8_image_t;
using Pix = Img::value_type;
Img a, b;
gil::png_read_image("/tmp/a.png", a);
gil::png_read_image("/tmp/b.png", b);

assert(a.dimensions() == b.dimensions());
Img c(a.dimensions());
png_write_view metodu
Örnek
Şöyle yaparız.
rgb8_image_t out_img(512, 512);
...
png_write_view("output.png", const_view(out_img));
Örnek
Şöyle yaparız.
using Img = gil::rgba8_image_t;
Img c = ...;

gil::png_write_view("/tmp/c.png", view(c));
transform_pixels metodu
Şöyle yaparız.
using Img = gil::rgba8_image_t;
using Pix = Img::value_type;
Img a, b;
gil::png_read_image("/tmp/a.png", a);
gil::png_read_image("/tmp/b.png", b);

assert(a.dimensions() == b.dimensions());
Img c(a.dimensions());

gil::transform_pixels(view(a), view(b), view(c),
  [](gil::rgba8_ref_t a, gil::rgba8_ref_t b) {
    gil::red_t   R;
    gil::green_t G;
    gil::blue_t  B;
    gil::alpha_t A;
    return Pix (
      get_color(a, R) + get_color(b, R),
      get_color(a, G) + get_color(b, G),
      get_color(a, B) + get_color(b, B),
      get_color(a, A) + get_color(b, A)
    );
});
subimage_view metodu
Şöyle yaparız.
rgb8_image_t out_img(512, 512);
...
subimage_view(view(out_img), 0, 0, 50, 50); 
view metodu
Şöyle yaparız. Ben bir çeşit stream döndürüyor gibi düşünüyorum.
gil::rgb8_image_t img;
auto srcView = gil::view (img);


Hiç yorum yok:

Yorum Gönder