问题标签 [boost-gil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
9290 浏览

c++ - 使用 Boost.GIL 创建图像

我一直在尝试阅读 boost::gil 文档,但它介于缺乏和复杂之间。

除了咆哮,我需要一个关于如何执行以下操作的示例:

创建一个图像,比如 512x512。用红色像素填充它。写信给 PNG。

在 gil 的文档中,我根本找不到任何关于这样做的任何内容。特别是创建图像或用像素部分填充图像。

如果有人可以帮忙,谢谢。

0 投票
2 回答
624 浏览

c++ - Boost::GIL bits8* 到 gray8_ptr_t 没有 reinterpret_cast?

尝试按照 GIL 的设计指南工作,我将bits__其用于我的通道数据类型。我经常将外部数据包装到 GIL 图像视图中。然而,即使使用bits__数据指针的类型,我也必须在创建图像视图之前添加一个 reinterpret_cast。取下面的代码

导致第 6 行出现错误“错误 C2440: 'initializing' : cannot convert from 'boost::gil::bits8 *' to 'boost::gil::gray8_ptr_t' 1> 指向的类型不相关;转换需要 reinterpret_cast, C 样式转换或函数样式转换"

尽我所能深入研究源代码,看来这些类型确实无关紧要。bits8 只是unsigned char,但是gray8_ptr_t是指向 a 的指针struct pixel<bits8,gray_layout_t>。该结构的唯一元素是单个 bits8,因此 reinterpret_cast 看起来很安全。它也适用于我对其进行的测试。

但是,我经常将外部数据包装到图像视图中,并且在每个地方都有 reinterpret_cast 感觉有问题。有没有更安全的方法来构建用于 GIL 的像素指针?

当前解决方法:

0 投票
2 回答
568 浏览

c++ - 如何从 Boost::GIL 视图类型中提取通道类型?

我找不到从图像视图中提取像素或通道类型的正确方法。在 gray8_view_t 的情况下,我希望将下面的 pod_t 定义为“无符号字符”。没有简单的 ViewType::pixel_t。函数 PixelFoo 中这种类型的正确定义是什么?

0 投票
1 回答
269 浏览

c++ - 如何使用 boost::gil 处理数字像素操作中的溢出?

boost::gil 的数字扩展包含如下算法:

当填充两个 uint8 通道值时,如果 ChannelR 也是 uint8,则会发生溢出。

我认为计算应该

  • 使用不同的类型进行处理(如何从模板化通道类型派生?)
  • 将结果剪辑到 ChannelR 类型的范围以获得饱和结果(使用boost::gil::channel_traits<ChannelR>::min_value()/ ... max_value()?)

如何以允许性能优化结果的方式做到这一点?

  • 转换为最大可能的类型?听起来适得其反……
  • 提供模板专业化库?有更好的主意吗?
0 投票
1 回答
2062 浏览

c++ - Boost::GIL 如何将图像以 JPEG 或 PNG 格式保存到 char* 中?

所以我在保存到文件时看到了周围的样本。但我想知道是否可以保存到 char* 或字符串而不是文件中 - 可以说将它保存在内存中?

0 投票
2 回答
2160 浏览

c++ - 用 gil 读取 png 图像

是否可以boost::gil读取 RGB 图像信息,以便我可以将文件读入正确的rgbx_image_t

有了以下内容,我必须事先知道类型,这不是那么整洁。

0 投票
1 回答
903 浏览

visual-c++ - 如何链接lpng包

我使用 VC++、boost::gil 包和 lpng 包来读取 png 图像。调试后我有以下链接问题:

它是怎么来的?我需要一些库来链接问题吗?

0 投票
4 回答
6106 浏览

c++ - 使用 Boost.GIL 将图像转换为“原始”字节

目标

我正在尝试使用 Boost GIL 来替换我已经实现的一些类似功能,这些功能即将达到其可维护生命周期的尽头。

我现有的代码适用于 24 BPP、8 位 RGB 图像,使用uint8_t*. 我无法改变这一点,因为相同的接口用于从不同的地方(例如 OpenGL 缓冲区)公开图像,并且已经有相当多的代码。

因此,我尝试以小步骤使用 GIL,首先读取文件并将像素逐字节复制到std::vector<uint8_t>可用于管理存储的 a 中,但仍然uint8_t*通过使用&vector[0].

这可以透明地放在现有接口后面,直到重构有意义为止。

我试过的

我认为这应该是使用copy_pixels()两个适当构造的视图的简单案例。

我整理了一个最小的、完整的示例,说明了我通过查看文档和尝试实现的目标的总和:

我被困在哪里

这不编译:

这是相当不言自明的 - RGB 像素不能unsigned char自动转换为单个像素。我想我会尝试使用copy_and_convert_pixels()来解决这个问题,但我看不到unsigned char解决这些转换问题的 3:1(即我在输出中为源图像中的每个像素都有 3 秒)问题的方法。转换似乎更针对色彩空间转换(例如 RGB->HSV)或包装更改。

0 投票
1 回答
467 浏览

visual-c++ - 如何使用 libpng 读取 png 图像?

在主程序中,我想读取 png 图像。调试没有问题。但是当我运行可执行文件时,它崩溃了。什么原因?谢谢!

0 投票
1 回答
2287 浏览

c++ - gil boost:将 rgb8_image_t 转换为 rgba8_image_t

我对 GIL 语法有点困惑。我想转换

并将alpha通道设置为1。是否有任何内置功能。如果不是如何手动执行此操作?