从 RGB 值数组中(就地)切片平面的算法

2023-11-24

我有一个字节 RGB 值的平面数组R1 G1 B1 R2 G2 B2 R3 G3 B3 ... Rn Gn Bn。所以我的数据看起来像:

char imageData[WIDTH * HEIGHT * 3];

但我想将 WIDTH*HEIGHT 数组传递给需要该数据的单个平面的现有 C 库。这将是仅包含 R 值(或仅包含 G,或仅包含 B)的序列。

分配一个新数组并复制数据很容易(废话)。但图像非常大。如果它不是一个 C 库,而是采用某种迭代接口来巧妙地进行“切片”遍历,那就太好了。但我无法编辑我正在调用的代码...它需要一个指向连续内存块的普通旧指针。

但是我有这个数组的写访问权限。创建一个将其分类为颜色平面的例程是可行的。我还需要一个反向转换来将其放回原处,但根据定义,将其排序到平面的相同方法可以应用于取消排序。

我如何有效地(就地)将该数组转换为R1 R2 R3 ... Rn G1 G2 G3 ... Gn B1 B2 B3 ... Bn然后又回来?有什么非朴素的算法吗?


如果您只需要一架飞机,这似乎很容易。如果您需要全部 3 个,那么您可能会更幸运地使用更复杂的算法。

void PlanarizeR(char * imageData, int width, int height)
{
    char *in = imageData;
    int pixelCount = width * height;
    for (int i = 0;  i < pixelCount;  ++i, in+=3)
        std::swap(*in, imageData[i])
}

从高到低向后运行循环来反转该过程应该不会太难。

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

从 RGB 值数组中(就地)切片平面的算法 的相关文章

  • 为什么我应该使用内联代码? [复制]

    这个问题在这里已经有答案了 我是一名 C C 开发人员 这里有几个始终困扰我的问题 常规 代码和内联代码之间有很大区别吗 主要区别是什么 内联代码只是宏的一种 形式 吗 选择内联代码时必须进行什么样的权衡 Thanks 表现 正如之前的答案
  • C - 计算文件中的单词、字符和行数。字符数

    我必须用 C 编写一段代码 输出给定文件中的字符数 行数和单词数 任务看起来很简单 但我现在真的不确定出了什么问题 所以 这是代码 include
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • 为什么 ObservableCollection 有两个集合构造函数?

    The 可观察集合 T https msdn microsoft com en us library ms668604类有两个构造函数 可以在其中传递项目集合 一个构造函数接受一个IEnumerable T 另一个List T 鉴于List
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • 我如何知道向量的实际最大大小? (不使用 std::vector::max_size)

    在在线课程中 我正在学习向量 在其中一个例子中 他们解释说 std vector max size 应该给我向量可以达到的最大大小 我决定测试一下 include
  • 使用信号和槽更新指针

    我对 Qt 很陌生 请帮我解决这个问题 我正在使用线程在后台执行密集操作 同时我想更新 UI 所以我使用 SIGNALS 和 SLOTS 为了更新 UI 我发出一个信号并更新 UI 让我们考虑下面的示例代码 struct sample QS
  • ef core 在更新数据库期间不使用 ASPNETCORE_ENVIRONMENT

    我使用 Visual Studio 通过一定的迁移来更新我的所有环境 使用下面的命令效果很好 update database Migration initMigrationProduct c ProductContext Environme
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • 如何将 Boost Spirit 自动规则与 AST 结合使用?

    编辑 当我想在另一个规则上使用它时 我扩展了 sehe 的示例以显示问题 http liveworkspace org code 22lxL7 http liveworkspace org code 22lxL7 17 我正在尝试提高 Bo
  • 链接到ntdll.lib并调用ntdll.dll内部的函数

    我最近正在对私有 API 进行一些研究 我尝试调用诸如NtOpenFile在 ntdll dll 中LoadLibrary and GetProcAddress在运行时 幸运的是 它成功了 今天早上我在电脑上进行了文件搜索 发现ntdll
  • Rx 在不同的线程上生产和消费

    我试图通过此处的示例代码来简化我的问题 我有一个生产者线程不断地输入数据 并且我尝试在批次之间添加时间延迟来对其进行批处理 以便 UI 有时间渲染它 但结果并不如预期 生产者和消费者似乎在同一个线程上 我不希望批处理缓冲区在正在生成的线程上
  • 快速将文本附加到文本框

    我有一个BackgroundWorker正在发布消息的线程 使用BeginInvoke在 GUI 中的文本框中 方法 write debug text 在文本框中显示文本使用AppendText并将文本写入Console 外观上是这样的Ba
  • 为什么我无法通过 lambda 捕获“this”指针?

    考虑以下代码 class A public void foo auto functor this A a this auto functor a The compiler won t accept this instead of a a g
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 如何从 C# 中的 Web Api 方法正确获取字节数组?

    我有以下控制器方法 HttpPost Route SomeRoute public byte MyMethod FromBody string ID byte mybytearray db getmybytearray ID working
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en

随机推荐

  • 内部可变性如何影响缓存行为?

    我正在尝试创建一个struct这需要一个Path并根据需要从指定路径加载图像 这是我到目前为止所拥有的 extern crate image use std cell RefCell use std path Path use image
  • 如何在 swagger codegen 中注入自定义 spring 验证?

    我们能够使用 openApi 文档并使用 spring swagger codegen 生成 Java 输入类 此外 我们可以在为常见约束 如长度 强制等 生成输入时注入 javax validation 注释 我希望将其提升到下一个自定义
  • 用jquery查找并替换文本,只有文本没有子元素

    我想用 jquery 查找并替换文本 我想将 SKU 更改为 art nu span class sku wrapper SKU span class sku 5 144 span span I tried product meta gt
  • AWS SNS 创建超时

    我有 Lambda 函数 在调用时它会创建 SNS 主题 向其添加订阅者 然后向其发布消息 发布消息后 它会删除该主题 要创建的主题的名称和订阅者作为负载提供给 lambda 函数 有时有效 有时失败Task timed out after
  • 我可以阻止 iOS 用户更改日期和时间吗?

    我想为公司员工部署托管 iOS 设备 他们将使用的应用程序将为数据添加时间戳 这些数据将在本地记录 然后转发 我需要这些时间戳是正确的 因此我必须防止用户调整设备上的时间 记录值 然后重置日期和时间 日期和时间将配置为自动来自网络 但设备可
  • Android 推送通知未使用 webview 打开我的活动

    我按照本教程创建了一个推送通知应用程序 http www vogella com articles AndroidCloudToDeviceMessaging article html 它有效 当我收到通知时 我可以打开一个网站 但是 我可
  • 实时聊天并带有推送通知

    我正在为我的网站开发私人消息传递功能 有没有办法从服务器获取用户已收到新消息的推送通知 我知道的唯一技术是通过 ajax 不断轮询服务器以查看是否有新消息 并在需要时重新加载消息窗口 感谢您的任何反馈 UPD 到目前为止 已经确定了以下方向
  • 使用 @EmbeddedId 在复合键上通过 @GenerateValue 生成 NULL ID

    尝试通过 Spring Data JPA 在具有组合键 长整型和日期 的表中保存一行 组合键的 Long 部分是 GenerateValue 但在进行基本操作时出现以下错误save call org hibernate id Identif
  • Ruby on Rails:/bin/sh:rspec:找不到命令

    我目前正在学习 Michael Hartl 的 RoR 教程 并且在尝试运行 Spork 和 Guard 时陷入了第 3 章 当尝试运行测试时 我得到 bin sh rspec command not found 是的 我确实四处寻找答案
  • 今天 8:21 推送后,dialog/oauth API 出现错误 500

    我们的应用程序在此调用中收到错误 500 有谁知道有什么问题吗 有一个解决方法 只需将 www facebook com 替换为 m facebook com Facebook 似乎已经放弃了对旧 API KEY 的支持 如果您查看应用程序
  • 显示名称属性与显示属性

    有什么区别DisplayName属性和DisplayASP NET MVC 中的属性 DisplayName设置DisplayName在模型元数据中 例如 DisplayName foo public string MyProperty g
  • Jquery 中的鼠标事件

    基本上 我有这个带有左右箭头按钮的图像 该图像默认是我从某些 gif 中提取的第一帧 原始 gif 包含 31 帧 我的目标是当用户单击向右箭头按钮时 我想显示下一帧等等 一切都运行良好 如下面的代码所示 但是 我需要添加一些鼠标按住事件
  • 保存网页以供离线使用并调用相同的 android

    我有一个 Android 应用程序要求 我需要打开保存的网页 如何做同样的事情 首先 我们如何保存一个网页及其对Android的依赖 然后在您的应用程序中打开它 任何输入都会有很大帮助 首先我们先保存一下网络档案 from webview
  • 仅返回 Task 而不是 Task 的方法会返回什么?

    我从什么返回D4 async static Task D4 Console Write Enter the divisor var n int Parse Console ReadLine Console WriteLine 24 n To
  • 使用flask-bcrypt生成和验证密码哈希

    所以我最近学习了如何在数据库中存储密码 即通过向明文密码添加盐 对其进行散列 然后存储散列 我正在开发一个非常小的 Flask 应用程序来尝试所有这些 但我在密码散列和检查过程的部分方面遇到了问题 似乎我最终得到了相同输入的两个不同的哈希值
  • Postgresql 中 SQL Server 的“stuff”和“for xml path('')”

    我正在将一些 SQL Server 2008R2 查询迁移到 Postgresql 9 0 但遇到了一些问题 这是 SQL Server 查询 stuff select p NAME as data from BPROVIDERS PROV
  • Android 网络库的比较:OkHTTP、Retrofit 和 Volley [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 一位正在学习 Android 的 iOS 开发人员提出的问题分为两部分 在iOS上我用过AF网络项目广泛 Android 有等效的库吗 我读过OkH
  • Firestore如何存储对文档的引用/如何检索它?

    我是 Firestore Firebase 的新手 我正在尝试创建一个新文档 其中一个字段是document reference到其他文档 我已阅读 Firebase 的所有指南和示例 但没有找到任何内容 另外 当我检索我创建的文档时 我将
  • 使用 webpack 2 和 vue-cli 加载本地字体

    我正在使用 vue cli webpack 模板 并尝试在我的项目中加载本地字体 我无法正确获取字体路径 我的道路应该是什么样子 我发现了一些关于我可能做错了什么的信息 但我无法弄清楚 https github com webpack co
  • 从 RGB 值数组中(就地)切片平面的算法

    我有一个字节 RGB 值的平面数组R1 G1 B1 R2 G2 B2 R3 G3 B3 Rn Gn Bn 所以我的数据看起来像 char imageData WIDTH HEIGHT 3 但我想将 WIDTH HEIGHT 数组传递给需要该