OpenCV:加载带有 alpha 通道但 8 位深度的图像

2023-12-30

我对这些标志有点困惑cv::imread takes.

我的目标是加载具有 alpha 通道的图像(即CV_8UC4)。同时我想始终以 8 位深度加载它们。

首先我尝试使用以下内容:

cv::imread(/*path*/, cv::IMREAD_COLOR);

这会去除 Alpha 通道并返回 8 位图像。对于透明 TIF,一切看起来都不错,只是透明部分是黑色的。然而,对于透明的 PNG 来说,它看起来完全错误。

接下来我尝试的是:

cv::imread(/*path*/, cv::IMREAD_ANYCOLOR);

结果与完全相同cv::IMREAD_COLOR。下一步尝试:

cv::imread(/*path*/, cv::IMREAD_ANYCOLOR | cv::IMREAD_ANYDEPTH);

Alpha 通道仍然不存在,但现在图像的原始深度被保留。

然后我尝试:

cv::imread(/*path*/, cv::IMREAD_UNCHANGED);

这也适用于 PNG 图像。然而,现在图像的位深度被保留,并且没有转换为 8 位。这意味着我必须在额外的步骤中对其进行转换。我怀疑这可能不是超级有效。

我还查看了 OpenCV 文档中标志的描述。那里说:

IMREAD_UNCHANGED    
If set, return the loaded image as is (with alpha channel, otherwise it gets cropped).
IMREAD_GRAYSCALE    
If set, always convert image to the single channel grayscale image.
IMREAD_COLOR    
If set, always convert image to the 3 channel BGR color image.
IMREAD_ANYDEPTH     
If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit.
IMREAD_ANYCOLOR     
If set, the image is read in any possible color format.

所以显然只有IMREAD_UNCHANGED完全支持 Alpha 通道。但什么是IMREAD_ANYCOLOR如果我无法用它读取四通道图像,有什么办法吗?

有什么方法可以加载将 alpha 通道转换为 8 位深度的图像吗?

另一件事对我来说似乎很奇怪:当我使用该选项时IMREAD_UNCHANGED并读取带有alpha通道的rgb图像,结果似乎是RGBA。如果我读取没有 alpha 通道的 RGB 图像,格式似乎是 BGR。为什么渠道的顺序不同?我认为 OpenCV 总是使用 BGR 排序。

下面是带有 alpha 通道的 PNG 在正确加载和错误加载时的样子:


None

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

OpenCV:加载带有 alpha 通道但 8 位深度的图像 的相关文章

  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • Visual Studio Code:如何配置 includePath 以获得更好的 IntelliSense 结果

    我是使用 Visual Studio Code 的完全初学者 我不知道我在做什么 我已经四处搜索 也许还不够 但我找不到像我这样的人如何配置的简单解释c cpp properties json每当我单击带有绿色波浪线下划线的行旁边的黄色灯泡
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 在 EnvDTE 中调试时捕获 VS 局部变量

    是否可以使用 EnvDTE 进行 vsix Visual Studio 扩展来捕获本地和调试窗口使用的调试数据 或者可以通过其他方法吗 我想创建一个自定义的本地窗口 我们可以修改它以根据需要显示一些较重的内容 而无需为高级用户牺牲原始的本地
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • C++0x中disable_if在哪里?

    Boost 两者都有enable if and disable if 但 C 0x 似乎缺少后者 为什么它被排除在外 C 0x 中是否有元编程工具允许我构建disable if按照enable if 哦 我刚刚注意到std enable i
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo

随机推荐

  • 检测 Ruby 中的 stdin 内容

    我想知道是否有人试图在标准输入上提供 ruby 程序内容 我不希望 ruby 退回到允许交互式输入 我该怎么做呢 When called in bash like this I want cat rb to exit immediately
  • IE 11 中的 CSS 模糊

    我一直试图在 IE 11 中获得 css 模糊效果几个小时 但没有取得任何进展 我尝试使用以下简单的 html img src http img3 wikia nocookie net cb20120627075127 kirby e
  • 无限/无限滚动的可用性

    这种技术的优点和缺点是什么 参见软件组合 http sortfolio com 举个例子 我个人想到的有两点 不可能告诉某人感兴趣的项目位于哪里 例如 您可能不会说 第 324 行 第二列 当您返回到无限滚动的页面时 导航会中断 你还能想到
  • Java大十进制数格式异常

    为什么下面的代码会抛出 java 数字格式异常 BigDecimal d new BigDecimal 10934 375 是的BigDecimal课程不占用任何Locale在其构造函数中考虑到String 可以在该构造函数的 Javado
  • Android 上缓存 SVG 图像和内存使用情况

    我在用着安卓SVG http code google com p svg android http code google com p svg android 我在应用程序的多个活动中使用相同的 svg 文件 构建缓存来存储和检索图像是个好
  • 是否可以顺利“热部署”ASP.NET Core应用程序?

    在带有 NET Framework 的 ASP NET 下 您可以无中断地执行新代码的 热部署 这是有效的 因为 IIS 可以为同一应用程序处理多个应用程序域 当新代码到达时 它会 耗尽 旧应用程序域 从而允许它完成请求 同时新应用程序域启
  • Angular 2 - 在控件初始化后添加验证器

    我想知道如何将验证器添加到已经创建的 formControl 使用它自己的验证器创建的 但是 让我们想象一下 经过一段时间的延迟后 我想添加另一个 或者我有一个自定义控件 其中包含一些验证器本身 并且我想创建外部反应式表单并将内部验证器添加
  • D3.js中的selection.style和selection.attr有什么区别?

    我发现它们在我的测试中都有效 on mouseover function d3 select this select text style fill red or on mouseover function d3 select this s
  • Flutter Dart HTTP POST 请求正文在服务器端为空

    我正在开发 Flutter 平板电脑应用程序 一旦输入一个输入字段 我就会尝试向服务器发送一个发布请求 以下是我为此调用的方法 Future lt http Response gt postRequest async print globa
  • 在环境变量中设置额外的主机

    我正在使用 docker compose 来运行我的应用程序 为此 我需要在容器内设置主机 这取决于我正在运行的环境 我的方法是 创建环境文件并设置变量 application env SERVER IP 10 10 9 134 我的 do
  • 发出拉取请求后,Jenkins 将禁用分支上的项目构建

    注意 我只在我的一个分支中设置了 Jenkinsfile 而不是在主分支中设置 我已经设置了 Git webhooks 来监视推送到我的 Github 存储库的事件 但是 我注意到我的 Jenkins 构建作为分支工作正常 拾取推送事件 触
  • 从 SQL 表中选择行的百分比?

    我有一个带有 PHP 脚本的网站 该脚本内部有一个 SQL 查询 返回由 JavaScript 文件访问的数据 该数据是一个巨大的航班数据列表 我需要能够随机选择 比方说 任何指定日期的总航班数的 40 为了论证起见 让我们这样说 quer
  • 指针可以指向它自己吗?

    我的问题是 如果指针变量的地址与其值相同 那么它真的指向自身吗 例如 在下面的代码中 是a指向自身的指针 include
  • 熊猫的分层抽样

    我看过Sklearn 分层抽样文档 http scikit learn org stable modules generated sklearn model selection train test split html以及熊猫文档 htt
  • 对象方法的匿名函数[重复]

    这个问题在这里已经有答案了 可能的重复 直接调用分配给对象属性的闭包 https stackoverflow com questions 4535330 calling closure assigned to object property
  • 基于 C# 套接字的 HTTP

    我正在尝试通过 C 套接字发送 HTTP 请求并从服务器接收响应 而且我是这种语言的新手 我写了以下代码 IP解析正确 IPEndPoint RHost new IPEndPoint IP Port Socket socket new So
  • Windows命令行重定向下的c ++换行符

    我发现 Windows 命令行重定向会自动将 n 替换为 r n 有什么方法可以避免这种情况吗 因为在 stdout 或 stderr 重定向之后 如果将 r n 写入控制台 您将得到 r r n 而不是 r n 多谢 你可以尝试一个简单的
  • Visual Studio 中使用的 JavaScript 参考语法是什么?

    在 Visual Studio 2012 中 我创建了一个 Web 应用程序 然后在默认值中找到了以下行 references js项目附带的脚本
  • 为什么没有 boost::intrusive::map ?

    升压文档 http www boost org doc libs 1 55 0 doc html intrusive html http www boost org doc libs 1 55 0 doc html intrusive ht
  • OpenCV:加载带有 alpha 通道但 8 位深度的图像

    我对这些标志有点困惑cv imread takes 我的目标是加载具有 alpha 通道的图像 即CV 8UC4 同时我想始终以 8 位深度加载它们 首先我尝试使用以下内容 cv imread path cv IMREAD COLOR 这会