Boost.GIL
Общая библиотека изображений C++ с открытым исходным кодом
C++ API, который абстрагирует представления изображений от алгоритмов и поддерживает работу с простыми и сложными изображениями. Создание гистограммы, вычисление градиентов изображения, свертка и повторная выборка и т. д.
Изображения являются фундаментальной частью многих проектов, связанных с графикой, цифровым видео, компьютерным зрением и обработкой изображений. Более того, изображения могут быть представлены множеством различных способов (цветовое пространство, битовая глубина, порядок каналов, политика выравнивания и т. д.). Поэтому работать над новым проектом, связанным с изображением, который может быть как общим, так и эффективным, очень сложно. Boost Generic Image Library (GIL) — это библиотека с открытым исходным кодом, которая дает разработчикам программного обеспечения возможность работать с простыми и сложными изображениями в своих собственных приложениях C++.
Самое замечательное в "Более". Библиотека IL заключается в том, что она абстрагирует изображения от алгоритмов и позволяет писать код, который может работать на различных изображениях с производительностью, сопоставимой с почерком для конкретного типа изображения. Таким образом, это облегчает работу разработчика, позволяя им писать код один раз и имея его работу для любого типа изображения.
Погром. Библиотека IL разработана как TL и Boost комплимент. Другим важным аспектом библиотеки является скорость и гибкость. Скорость была ключевой частью дизайна библиотеки. Вы можете легко определить любой параметр изображения во время выполнения для очень незначительных затрат на производительность по сравнению со многими другими библиотеками. Он обеспечивает поддержку нескольких важных функций, таких как не-байтовые пиксели, вычислительные градиенты изображений, интеграция саперов, назначение канала на серый пиксель, утешение и выборка и так далее.
Начало работы с Boost.GIL
Самый простой способ установить Boost.GIL — использовать GitHub. Пожалуйста, используйте следующую команду для плавной установки
Установите Boost.GIL через GitHub.
git clone --https://github.com/boostorg/gil
Чтение и запись изображений
Гистограмма — это графическое представление распределения тонов в цифровом изображении. В контексте обработки изображений гистограмма изображения обычно относится к гистограмме значений интенсивности пикселей. Библиотека Boost.GIL позволяет разработчикам программного обеспечения создавать гистограммы внутри своего собственного приложения, используя код C++. Его можно сгенерировать, подсчитав количество значений пикселей, попадающих в каждый бин. Вы также можете легко вычислить гистограмму яркости изображения.
Написание изображения через C++ API
#define png_infopp_NULL (png_infopp)NULL
#define int_p_NULL (int*)NULL
#include
#include
using namespace boost::gil;
int main()
{
rgb8_image_t img(512, 512);
rgb8_pixel_t red(255, 0, 0);
fill_pixels(view(img), red);
png_write_view("redsquare.png", const_view(img));
}
Операции с изображениями на уровне пикселей с использованием C++ API
Библиотека с открытым исходным кодом IL предоставляет полную поддержку операций изображения на уровне пикселей в своих C++ приложениях. Библиотека включает в себя некоторые полезные операции, которые позволяют пользователям обрабатывать пиксельные значения, пиксельные указатели и пиксельные ссылки, такие как создание пиксельного цвета, доступ к каналу, сравнение двух каналов, построение конструкционного указателя планара, преобразование серого l-значения в GB и так далее.
Перевести цветные пространства в серые масштабы через C++
template
void x_luminosity_gradient(SrcView const& src, DstView const& dst)
{
using gray_pixel_t = pixel::type, gray_layout_t>;
x_gradient(color_converted_view(src), dst);
}
Преобразование изображения внутри C++ приложений
Открытый источник Подъем. Библиотека IL дает программистам возможность вращать изображения всего несколькими строками кода. Погром. IL поддерживает различные функции преобразования изображения, которые могут выполнять любые связанные с осью вращения, перевернуть изображение вертикально или горизонтально, извлечь прямоугольный подобраз, применить преобразование цвета, специальные вращения на 90, 180 или 270 градусов и так далее.
Преобразование изображения через C++ API
template
void y_gradient(const SrcView& src, const DstView& dst) {
x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
}