问题标签 [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 回答
147 浏览

c++ - Boost::GIL:使用 alpha 通道读取 *.png 图像缺少抗锯齿

我正在使用提升 1.74。

所以,没有异常捕获和休息的东西,我的实际代码看起来像:

它读取 * .png 图像文件并将其转换为 int32_t 数组。(然后使用该数组生成 OpenGL 纹理)。

所以,原始图像文件是:

原来的

它是从 Adob​​e Illustrator 导出的,带有 alpha 通道,去隔行扫描。

在这里,我遇到了一些我无法解决的问题:

  • 二次抽样。

在此处输入图像描述- 这是结果。如您所见,图像与楼梯一样多,为什么?如何解决?

  • 交错。

在此处输入图像描述- 这是结果。如您所见,从图像底部到顶部是否还有一行。暂时通过导出去隔行图像来解决它,但这不是最好的方法。如何使用 gil 解决它?

另一项测试:原始测试(带有 alpha 通道渐变):

在此处输入图像描述

结果:

在此处输入图像描述

0 投票
1 回答
202 浏览

c++ - 读取透明图像 boost.gil C++

我有一个透明背景的图像,我想将它复制到另一个图像上,这两个图像都是 png 格式,我尝试使用 boost::gil::rgba8_image_t 但它仍然复制具有灰色背景的透明图像。这是我用过的

0 投票
0 回答
52 浏览

c++ - 使用 Boost::GIL 库和 Openjpeg 库将任何常见格式转换为 jpeg2000

我是图像处理的新手。我能够使用 Boost 通用图像库 ( Boost::GIL) 在常见格式之间进行转换,例如BitmapsJPEGPNGTIFF. 现在,我想使用 openjpeg 库将任何常见格式转换为jpeg2000.

下面是我的图像包装类。该boost::gil::rgb8_image_t变量包含图像信息,例如宽度、高度、通道数、像素等。

我想使用pixel map来自变量的未编码图像数据 ()boost::gil::rgb8_image_t作为中间格式,将任何常见格式转换为jpeg2000. pixel map存储在一维向量uint8_t中。我想将该向量存储到一个 openjpeg ( opj_image_t) 对象中。

bitmap通过查看 openjpeg 源代码,有一个函数可以将数据数组转换为opj_image_t对象。我怎么能做同样的事情来boost::gil::rgb8_image_t转换opj_image_t

这是来自 openjpeg 库的代码:

链接到包含代码的 openjpeg 文件:https ://github.com/uclouvain/openjpeg/blob/master/src/bin/jp2/convertbmp.c

0 投票
1 回答
72 浏览

c++ - 如何使用 boost::gil 将 gray8_view_t 转换为 rgb8_view_t 并从中创建 rgb8_image_t 对象?

由于 boost::gil 不支持将 gray8_view_t 写入 BMP 格式,所以我想将 gray8_view_t 转换为 rgb8_view_t。这是我到目前为止所尝试的。

auto rgb_view = boost::gil::planar_rgb_view(width, height, pixels, pixels, pixels, width);

像素包含来自 gray8_view_t 对象的原始像素,所以我让 r=g=b=pixels。但boost::gil::write_view(ofstream, rgb_view, boost::gil::bmp_tag())给了我一个空的形象。任何想法?

更新: 通过使用 sehe 的示例代码http://coliru.stacked-crooked.com/a/daa0735f774b727f,我能够获得颜色对话以编译color_converted_view<gil::rgb8_view_t>。但是当我使用boost::gil::write_viewcolor_converted_view<gil::rgb8_view_t>. 我的猜测是我必须从返回值创建一个实际的 rgb8_image_t 对象。如何将返回值转换为color_converted_view<gil::rgb8_view_t>实际的 rgb8_image_t 对象?谢谢!

我收到的错误消息之一

这是我正在使用的 gray8_image_t 文件

0 投票
0 回答
53 浏览

c++ - 使用蓝色通道提升 GIL 库颜色分离问题

我将 Boost-GIL 库用于一些图像处理任务。首先,我将图像颜色分离为 RGB 通道并在每个通道上执行操作。就操作的可逆性而言,我注意到了一些奇怪的事情。可逆性原则意味着,如果我们重新组合通道以重建原始图像,我们应该得到与原始图像没有任何差异的原始图像。不幸的是,我没有看到这种行为。我附上了图像对作为问题的说明。左图为原图,右图为合成图。蓝色的优先级更高。我使用 Mathematica ColorCombine函数进行重新组合操作,作为交叉检查,我使用了 Mathematica ColorSeparate功能来执行相同的颜色分离操作。在ColorSeparate d 通道上应用ColorCombine后,我得到了没有单个像素差异的原始图像。此外,我在两个单独的图像上验证了这一点,并观察到只有蓝色通道与 Mathematica 实现不匹配。由于颜色分离是一项非常基本的操作,如果库中有问题,应立即修复。下面给出了从原始“.jpg”图像中分离颜色的代码。

埃菲尔铁塔

通道保存为数据矩阵(例如“Eiffel_red.dat”、“Eiffel_green.dat”、“Eiffel_blue.dat”)并作为每个通道的颜色表导入 Mathematica。

0 投票
0 回答
101 浏览

c++ - 使用 PImpl 成语和奇怪重复的模板模式

在使用 PImpl Idiom 和 Curiously Recurring Template Pattern 为派生的图像类创建构造函数时,我遇到了一些编译错误。图像类实现的基类使用 CRTP(Curiously Recurring Template Pattern)来强制执行静态调度,而不是在另一个虚拟调用上分层。请告诉我我做错了什么。请参阅评论以了解错误发生的位置

// 错误:没有匹配的构造函数用于初始化 'jpeg_image::impl' [clang-diagnostic-error]

// 错误:字段的类型不完整 'jpeg_image::impl' [clang-diagnostic-error]

图像.hpp

图像.cpp