gpt4 book ai didi

c++ - 如何将图像与boost gil结合?

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:24 25 4
gpt4 key购买 nike

我刚刚开始熟悉 Boost GIL(以及一般的图像处理)并怀疑这很简单,但我还没有找到相关文档。

我有一组 ImageView ,我想将它们与任意函数结合使用。为简单起见,假设图像对齐(相同大小和定位器类型),我只想将像素值加在一起。一种方法是 create a combining iterator from a zip_iterator and a transform_iterator ,但我猜测有一些图像处理算法可以方便地抽象出来用于此目的。

Mandelbrot example文档中的内容可能是相关的,因为它从一个函数计算像素值,但我迷失了细节并且无法适应我的情况。

最佳答案

我能找到的唯一二进制 channel 算法是channel_multiply

您可能真正要寻找的算法是 transform_pixels确实组合成二进制变体。

这是我能做的最简单的例子。

#include <boost/gil/gil_all.hpp>
#include <boost/gil/extension/io/png_io.hpp>

namespace gil = boost::gil;

int main() {
using Img = gil::rgba8_image_t;
using Pix = Img::value_type;
Img a, b;
gil::png_read_image("/tmp/a.png", a);
gil::png_read_image("/tmp/b.png", b);

assert(a.dimensions() == b.dimensions());
Img c(a.dimensions());

gil::transform_pixels(view(a), view(b), view(c), [](gil::rgba8_ref_t a, gil::rgba8_ref_t b) {
gil::red_t R;
gil::green_t G;
gil::blue_t B;
gil::alpha_t A;
return Pix (
get_color(a, R) + get_color(b, R),
get_color(a, G) + get_color(b, G),
get_color(a, B) + get_color(b, B),
get_color(a, A) + get_color(b, A)
);
});

gil::png_write_view("/tmp/c.png", view(c));
}

当a.png为enter image description here时b.png 是 enter image description here (也请注意透明胶片),c.png 变为 enter image description here (再次注意透明胶片)。

假设您需要微调转换函数以执行更有用的操作。

关于c++ - 如何将图像与boost gil结合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com