如何将图像与boost gil结合?

2023-12-21

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

我有一组图像视图,我想将它们与任意函数结合起来。为简单起见,假设图像已对齐(相同大小和定位器类型),我只想将像素值添加在一起。一种方法是从 zip_iterator 和 transform_iterator 创建组合迭代器 http://www.boost.org/doc/libs/1_65_1/libs/iterator/doc/zip_iterator.html,但我猜测有一些图像处理算法可以方便地为此目的进行抽象。

The 曼德尔布罗例子 http://www.boost.org/doc/libs/1_65_1/libs/gil/example/mandelbrot.cpp文档中的 可能相关,因为它从函数计算像素值,但我迷失在细节中并且无法将其适应我的情况。


我能找到的唯一二进制通道算法是channel_multiply.

您可能真正寻找的算法是transform_pixels http://www.boost.org/doc/libs/1_65_0/libs/gil/doc/html/g_i_l_0154.html#gceacc4e2452d2b3adba5902b21c5957b which does以二进制形式组合。

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

#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));
}

When a.png is enter image description here and b.png is enter image description here (note transparencies too), c.png became enter image description here (again, note the transparencies).

您将需要微调转换函数以做一些更有用的假设。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将图像与boost gil结合? 的相关文章

随机推荐

  • 在 git 中单步浏览文件的历史记录;类似于 p4v 游戏中时光倒流

    我正在寻找一种工具来帮助探测文件的历史记录 具体来说 我想查看文件的全部内容 但能够及时向后和向前移动 额外的乐趣是装饰表明与之前的转速或其他指定转速的差异 目前我使用git blame 并可以查看哪些更改影响了当前每条线 然后我必须通过某
  • Predict.gbm() 2.1.4 与 2.1.3 的预测不一致

    这个问题和我之前的帖子有关here https stackoverflow com questions 52702984 inconsistent predictions from gbm predict 我已经找到了这个问题 它似乎与我使
  • 在构建应用程序的发布版本时,我应该保留 android.support.v4.app.Fragment 及其派生类吗?

    我读了这个answer https stackoverflow com a 13822079 1065835并理解为什么我应该保留我的服务 活动和自定义视图的名称 但是我应该保留从 android support v4 app Fragme
  • 在 myBatis 中传递多列

    我想知道 我们如何在 myBatis 关联标签中传递多个列 例如 我的 mapper xml 文件中有以下 xml 片段
  • 广度优先搜索方式的一般树遍历(无限)

    我有一个树结构 其中每个节点有 5 个子节点 不允许超过此数量 我希望以广度优先搜索的方式遍历这棵树 现在我希望使用广度优先搜索方式从选定的父节点计算空节点 e g 如果给定的父节点为 1 则函数必须返回节点 4 因为它有可用位置 如果给定
  • R中基于交替字符的分割字符串

    我正在尝试找出一种有效的方法来分割字符串 例如 111110000011110000111000 变成一个向量 1 11111 00000 1111 0000 111 000 其中 0 和 1 可以是任意交替字符 Try strsplit
  • 如何协调抽屉式导航与底部导航视图

    我对 Android 开发还很陌生 我正在检查材料设计库 并实现了一个带有底部导航的导航抽屉 可以轻松地浏览片段 这两个组件都工作得很好 但我不知道如何协调这两个组件的导航 例如 当在导航抽屉上切换片段时 它会更改布局 但按钮导航所选项目不
  • 加载页面后导航栏活动选项不会保持活动状态

    我的代码中有一个导航栏 它位于 ejs 文件名 nav ejs 中
  • Powershell获取Windows中显示的区分大小写的路径

    我正在寻找一种方法来获取本地路径 其中包括名称中使用的任何驼峰式大小写 主要原因是我可以使用相同的路径在 Windows wsl 中进行调用 例如 在 Windows 中我可以将文件称为 c FoO bar txt c Foo Bar tx
  • 如何将配对列表添加到自动模式列表中?

    我有一长串文件和文件扩展名 我希望 Emacs 在 ruby 模式下自动打开它们 从使用谷歌来看 最基本的解决方案是这样的 setq auto mode alist cons rake ruby mode auto mode alist s
  • 填充 WCF 中的 PrimaryIdentity

    我使用简单的 HTTP 标头将令牌传递给 WCF 服务进行身份验证 WCF 服务需要使用 basicHTTPBinding 因此遗憾的是我无法使用固定的 ws security 实现 我想填充 PrimaryIdentity 对象 以便 W
  • 相当于字节数组的 StringBuilder

    这是一个简单的问题 我认为应该已经得到解答 我确实尝试在这里找到答案 但没有找到任何答案 所以如果我错过了什么 我深表歉意 不管怎样 除了字节数组之外 是否有 StringBuilder 的等价物 我不关心所有不同的超载Append 但我想
  • 从 eclipse 创建 JAR 时如何在清单文件中设置类路径?

    I am trying to creat JAR file through eclipse I read some of the threads from stackoverflow 以及其他论坛 但没有任何帮助 我创建了一个像这样的单独的
  • React.js 将文本渲染为 HTML

    这就是渲染代码现在的样子 我知道这样做是不安全的 render function return div p p div 问题是如何安全地渲染它 参考https facebook github io react docs dom elemen
  • 将变量名传递给 R 中的函数

    我注意到很多包允许您传递符号名称 这些名称在调用函数的上下文中甚至可能无效 我想知道它是如何工作的以及如何在我自己的代码中使用它 这是 ggplot2 的示例 a lt data frame x 1 10 y 1 10 library gg
  • 如何使用spring集成在TCP连接上实现保活连接?

    我有一个使用 spring 集成 TCP 构建的 TCP 客户端 服务器支持保持活动消息 ping pong 风格 连接是使用配置的CachingClientConnectionFactory我想利用这个服务器功能 这是我的 bean 配置
  • 如何在 scandir() php 中添加分页 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的 scandir php 代码中添加分页 请帮助我如何在我的 php 代码中添加分页 这是我的代码
  • 带输出的冒泡排序

    所以我对其进行了一些编辑 并且几乎得到了我想要的结果 我现在遇到的唯一问题是我得到了一行我不想要的输出 我觉得这里的修复很简单 但我的大脑现在很混乱 static void bubbleSort int myArray int n myAr
  • 使用 Mantle 将 JSON 数组中的 NSString 转换为 NSURL

    假设给我的是以下 JSON 响应 images http domain com image1 jpg http domain com image2 jpg http domain com image3 jpg 使用 Mantle 我想解析这
  • 如何将图像与boost gil结合?

    我刚刚熟悉 Boost GIL 以及一般的图像处理 并怀疑这很简单 但我还没有找到相关文档 我有一组图像视图 我想将它们与任意函数结合起来 为简单起见 假设图像已对齐 相同大小和定位器类型 我只想将像素值添加在一起 一种方法是从 zip i