BOOST::Gil для обработки изображений

можно ли:

прочитать изображение, заданное только именем файла (не зная формата изображения) в несжатую форму 2d-матрицы rgb (например, прочитать JPG в 2d-массив) получить доступ к байтам этого изображения, скопировать их, изменить их... (например, инвертировать цвета, мне нужен указатель на байты изображения, сеттеры/геттеры не подойдут)

rgb8_image_t img;
jpeg_read_image ("lena.jpg",img);

я использую их для загрузки изображения. теперь, как я могу получить доступ к пикселям или байтам этого изображения?


person user3275596    schedule 21.08.2014    source источник
comment
Я знал эту библиотеку раньше, но похоже (если вы читали image.hpp), что вам нужно использовать «представление», чтобы получить доступ к данным изображения ex.   -  person alexbuisson    schedule 21.08.2014
comment
у вас есть какой-нибудь пример кода, который может помочь. в документации по boost нет примера кода, чтобы понять, с чего начать и где закончить   -  person user3275596    schedule 21.08.2014
comment
На самом деле @alexbuisson опубликовал ссылку на пример кода, возможно, вы пропустили его, потому что он просто назывался ex: boost.org/doc/libs/1_56_0/libs/gil/doc/html/   -  person ypnos    schedule 21.08.2014
comment
спасибо @ypnos, я видел там, я просто новичок, и я очень запутался в этом. Я был бы очень признателен, если бы был гораздо более простой пример для понимания.   -  person user3275596    schedule 21.08.2014


Ответы (1)


Вот пример, который устанавливает для компонента G всех пикселей значение 128.

rgb8_image_t img;
const rgb8_view_t & mViewer = view(img);
for (int y = 0; y < mViewer.height; ++y)
{
  rgb8_view_t::x_iterator trIt = mViewer.row_begin(y);
  for (int x = 0; x < mViewer.width; ++x)
    at_c<1>(trIt[x]) = 128;
}
person Andrey Nekrasov    schedule 23.06.2016