OpenCV - 将 PNG 的透明部分变成白色

2024-04-15

我是 OpenCV 的新手,所以如果我的问题对你来说很愚蠢,请耐心等待。

I have a set of images that all have a transparent border on the left and right like you can see below: enter image description here

我想擦除这些边框,所以我考虑了边缘检测,如果我可以将这些透明边框转换为白色,这将很容易做到。在文档中我发现你可以这样做:

img = cv2.imread("./Green/image-000.png", 1)
cv2.imwrite('../image-000.png', img)

这会擦除 png 图像的 Alpha 通道,但将其变为黑色。 有没有类似的东西可以把边框变成白色? 或者有没有更简单的方法来消除这些边界? 如果你能帮助我,你会让我非常高兴!

PS:我使用Python 2.7和OpenCV 3.4


你应该加载图像IMREAD_UNCHANGED, i.e.

import cv2 as cv
img = cv.imread("./Green/imgage-000.png", cv.IMREAD_UNCHANGED)

然后,您的图像将有 4 个通道(BGRA),并且可以使用alpha通道遮罩将相应部分变成白色:

alpha_channel = img[:, :, 3]
_, mask = cv.threshold(alpha_channel, 254, 255, cv.THRESH_BINARY)  # binarize mask
color = img[:, :, :3]
new_img = cv.bitwise_not(cv.bitwise_not(color, mask=mask))

我使用透明 PNG 测试了此代码,其中颜色通道为黑色,信息位于透明度中:

嵌套的bitwise_not很丑陋,但这是我发现让它发挥作用的唯一方法。

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

OpenCV - 将 PNG 的透明部分变成白色 的相关文章

随机推荐

  • 数据表行切换选项

    我的问题 我正在开发一个与 DataTableJS 相关的项目 我需要一个行分组功能 它与分组行分开 只是我想在下面的切换中显示相关的表行内容城市名 我到底在寻找什么 我的演示代码 document ready function var t
  • Swagger 无法生成 HTTP“PATCH”的文档

    我已遵循以下内容博客条目 http kingsfleet blogspot co uk 2014 02 transparent patch support in jax rs 20 html http Transparent 20PATCH
  • 在 htaccess 文件中使用公用文件夹时的多种语言

    我有这个 htacces文件我很喜欢它 但是如何向它添加多语言 所以它明白localhost en 不是文件或文件夹 现在它使用公共文件夹作为 根 所以localhost public 如果我想这样做 那太好了 我仍然使用公共文件夹作为根目
  • JetBrains(IntelliJ、PhpStorm、WebStorm ...)带有 SSH 密钥的私有 git 存储库

    我的新 Web 服务器需要使用 RSA 2048 密钥进行身份验证 因此我生成了一个密钥 我将ir rsa and id rsa pub我的主文件夹中的文件 ssh Windows 10 但是当我使用 cvs 注释 用于拉或推 时 我收到错
  • 通过查找按组快速 data.table 分配多列

    我一直在寻找规范的方法来完成我正在尝试的事情 但我似乎不太幸运地获得快速而优雅的工作 简而言之 我有一个包含多个值列的大表 并且希望将每个值乘以查找表中的相应因子 我不知道如何动态传递我想要乘以查找值的列 或者如何在基本表达式之外引用查找值
  • C语言中如何清空数组?

    char x 1000 x hello 我会用什么来清除内容x 我无法重新初始化它 请使用strcpy x 0 or free 您不能将任何内容分配给您的变量数组x是 因此 任何以x 是错的 第二 hello 不是字符串 它是一个多字符文字
  • Google Analytics 3.0 身份验证流程

    EDIT 最初这个问题问我如何仅使用我的 API 密钥通过 Google Analytics API 进行身份验证 作为弗拉特科指出 https stackoverflow com a 13834210 697449 这是不可能的 现在我只
  • 为什么 Spark 在字数统计时速度很快? [复制]

    这个问题在这里已经有答案了 测试用例 Spark 在 20 秒以上对 6G 数据进行字数统计 我明白映射减少 FP and stream编程模型 但无法弄清楚字数统计的速度如此惊人 我认为这种情况下是I O密集型计算 不可能在20秒以上扫描
  • Mondrian OLAP 引擎 + Olap4j 的数据呈现

    我正在对一个应用程序进行一些规划 该应用程序使用 Mondrian OLAP 引擎和 Olap4j 并且应该向用户呈现 显示数据 我了解所有后端内容 但我不确定应该如何在视图层中显示数据 例如 olap4j 有一个格式化程序 可以将 SEL
  • 将 cURL 请求转换为 Guzzle

    我正在尝试使用Guzzle而不是直接使用cURL来实现HTTP请求 我如何使用 Guzzle 发出相同类型的请求 或者我应该坚持使用 cURL ch curl init Set the URL curl setopt ch CURLOPT
  • 如何将tools.jar添加为sbt中的“动态依赖项”。是否可以?

    我需要在我的项目中使用tools jar 但是将其打包在jar中没有多大意义 因为用户已经拥有它 那么 是否可以将其用作 动态依赖项 意思是 我希望我的代码compile通过使用tools jar文件发现于my JAVA HOME 但我不希
  • 使用 WinApi 函数在 FMX 画布上绘图

    这个问题看起来很简单 使用 VCL 可以正常工作 图像是 VCL 上的 TImage procedure TFormMain btnDrawBackgroundClick Sender TObject var theme HTHEME be
  • 无法在 android studio 中加载包装器属性

    请帮助我 当我在 android studio 中创建一个新项目时出现错误 无法从 C Users baren AndroidStudioProjects ToyaGarage gradle wrapper gradle wrapper p
  • 无法在 Android Studio 中的项目结构上添加模块

    结构项目窗口不显示所有选项 我无法添加库或模块 Check the image And this is how it should look with all the options 我尝试修复重新安装 android studio 但没有
  • 使用 CGRectZero 在 UIView 类或子类上调用 initWithFrame 意味着什么?

    我见过调用的代码initWithFrame of a UIView子类 例如UILabel with CGRectZero一切似乎都进展顺利 实例化一个是什么意思UIView具有 2D 点的子类 这似乎是CGRectZero is 它只是意
  • Dplyr,非标准评估和 Walrus 运算符和 curly-curly

    一个真正的问题 每当我需要编写 dplyr 函数时 我都会随机应变 我知道卷曲运算符可以大大简化任务 https www tidyverse org blog 2019 06 rlang 0 4 0 https www tidyverse
  • 如何使用 javascript 客户端设置 Python 服务器端

    因此 已经设置了一个在我必须构建的控制台上运行的 Python 程序 我将使用 Javascript 为应用程序构建一个 Web GUI 界面 我会怎样 A 继续处理该 Python 程序的输入 输出 而无需触及原始代码 b 通过 Java
  • 为什么我收到“Proto 类已在文件中定义”?

    第一个原型文件 main proto 位于offline目录 option java package com xxx proto option java outer classname Service1 option java multip
  • Android在布局中绘制分隔线/分隔线?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想在布局的中间画一条线 并将其用作其他项目 如 TextView 的分隔符 有没有一个
  • OpenCV - 将 PNG 的透明部分变成白色

    我是 OpenCV 的新手 所以如果我的问题对你来说很愚蠢 请耐心等待 I have a set of images that all have a transparent border on the left and right like