Boost.GIL
开源 C++ 通用图像库
C++ API 从算法中抽象出图像表示,并支持处理简单和复杂的图像。生成直方图、计算图像梯度、卷积和重采样等。
图像是许多有关图形、数字视频、计算机视觉和图像处理的项目的基本组成部分。 此外、图像可以用多种不同的方式表示(颜色空间、位深度、频道顺序、对齐策略等)。 因此、在一个新的图像相关项目上进行工作、这个项目既是通用的、也是有效的、是非常困难的。 Boost通用图像库(IL)是一个开放源码库、使软件开发者能够在其C++个应用程序中使用简单复杂的图像。
Boost。IL图书馆的伟大事情是它从算法中抽象出图像表示、并允许在各种图像上编写代码、其性能与特定图像类型相比。 因此、它使开发者的工作容易、允许他们编写一次代码、并使其适用于任何形象类型。
Boost。IL图书馆是一个TL和Boost恭维设计的。 图书馆的另一个重要方面是速度和灵活性。 速度是图书馆设计的关键部分。 与其他许多库相比、您可以很容易地在运行时为一个非常小的性能成本定义任何图像参数。 它提供支持若干重要特点、如不计算像素、计算图像梯度、船舶集成、分配一个通道到灰度像素、安慰和取样。
Boost.GIL 入门
安装 Boost.GIL 最简单的方法是使用 GitHub。请使用以下命令顺利安装
通过 GitHub 安装 Boost.GIL。
git clone --https://github.com/boostorg/gil
读取和写入图像
直方图是数字图像中色调分布的图形表示。在图像处理上下文中,图像的直方图通常是指像素强度值的直方图。 Boost.GIL 库使软件开发人员能够使用 C++ 代码在他们自己的应用程序中生成直方图。它可以通过计算落在每个 bin 中的像素值的数量来生成。您还可以轻松计算图像的亮度直方图。
通过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 的像素级图像操作
开放源码库Boost。IL为自己C++个应用程序中的像素级图像操作提供了完全的支持。 图书馆包括一些有用的操作、使用户能够处理像素值、像素指针和像素引用、例如制作像素颜色、使用两个字符。
通过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++个应用程序内的图像变换
开放源码Boost。IL库为软件程序员提供了只用几行代码旋转图像的能力。 Boost。IL支持各种各样的图像转换函数、可以垂直或水平进行任何转动、提取一个矩形的子图像、如此旋转、
通过C++次图像变换
template
void y_gradient(const SrcView& src, const DstView& dst) {
x_gradient(rotated90ccw_view(src), rotated90ccw_view(dst));
}