使用 OpenCV 进行图像 alpha 合成

2024-01-17

我想实施这些步骤:

这是我的代码:

import cv2
from skimage.io import *
import numpy as np

imA = cv2.imread('C.jpg')
kernel = np.ones((3, 3), np.uint8)
imA = cv2.cvtColor(imA, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(imA, 5, 255, cv2.THRESH_BINARY)
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
imshow(opening)
show()
imF = cv2.imread('157969651.jpg')
imF = cv2.cvtColor(imF, cv2.COLOR_BGR2RGBA)

imB = cv2.imread('images.jpg')
imB = cv2.cvtColor(imB, cv2.COLOR_BGR2RGBA)

imF[:, :, 0] *= opening
imF[:, :, 1] *= opening
imF[:, :, 2] *= opening
imF[:, :, 3] *= opening

imB[:, :, 0] *= (1 - opening)
imB[:, :, 1] *= (1 - opening)
imB[:, :, 2] *= (1 - opening)
imB[:, :, 3] *= (1 - opening)

res = imF + imB

imshow(res)
show()

Result:

我不知道这段代码有什么问题。任何人都可以看到我的步骤有什么问题吗?


Alpha不是通道,是掩码。

我的解决方案:

import cv2
import numpy as np

foreground = cv2.imread('foreground.jpg')
background = cv2.imread('background.jpg')
kernel = np.ones((5, 5), np.uint8)

foreground_gray = cv2.cvtColor(foreground, cv2.COLOR_BGR2GRAY)

ret, mask = cv2.threshold(foreground_gray, 240, 255, cv2.THRESH_BINARY)

opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

output = np.zeros(foreground.shape, dtype=foreground.dtype)

for i in range(3):
    output[:, :, i] = background[:, :, i] *(opening/255) + foreground[:, :, i] *(1-opening/255)

cv2.imshow("img", output)
cv2.waitKey(0)

前景.jpg

背景.jpg

Output:

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

使用 OpenCV 进行图像 alpha 合成 的相关文章

随机推荐

  • 在 c++11 中全局修复种子

    我正在尝试使用新的c
  • 如何捕获和查看 Cortex-M4 MCU 上的 ITM 跟踪信息?

    我想捕获 解码和查看 Cortex M4 MCU 在我的例子中是 Atmel SAM4S 的 ITM 跟踪信息 特别是 我想捕获与板上其他信号相关的异常和用户跟踪数据 即在同一时间线上显示所有信号和跟踪信息 这可以通过以下步骤完成 将调试器
  • AngularJS 指令绑定具有多个参数的函数

    我在将控制器中定义的函数与指令中的回调函数绑定时遇到一些问题 我的代码如下所示 在我的控制器中 scope handleDrop function elementId file console log handleDrop called 然
  • 在sql server中对加密列建立索引

    我将患者健康信息存储在 SQL Server 2012 数据库中 当我搜索病人的姓名时 他们的名字是加密的 所以搜索速度非常慢 如何在加密列上添加索引 我在 varbinary 字段上使用对称密钥加密 256 位 AES 患者的名字 姓氏
  • Maven 版本控制最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 更改 Maven 项目版本 发布此版本然后返回到的最佳方法是什么 SNAPSHOT发展 目前我正在做以下事情 检索当前版本 最有可能的是SNAP
  • 如何绘制多列的条形图 3D 投影

    我有一个表 其中包含根据两个不同参数的三个不同时间特征 我想在 x 轴和 y 轴上绘制这些参数 并在 z 轴上显示三个不同时间的条形 我创建了一个简单的条形图 其中绘制了其中一个时间特征 import numpy as np import
  • 是否可以将数据从 DelegatingHandler 传递到 ASP.NET Web API 中的控制器?

    我正在实现一个与授权相关的 DelegatingHandler 其中我从数据库加载 api 用户 调用者 配置文件 当授权成功时 我想将此实例传递给控制器 否则我必须再次加载它 有没有办法在不使用会话或依赖存储库缓存的情况下执行此操作 Ht
  • 当网格被过滤时,Kendo 工具栏 AddNew 按钮不起作用

    我有一个小的剑道网格 设置如下 以一种令人难以置信的神秘方式 添加新 的控制器操作 即BatchCreate仅当您在单击 添加新项 后单击另一个命令按钮时才会调用 例如 a 单击 添加新的 什么也没有发生 b 重新加载页面 点击 Add N
  • 了解第 3 方 iframe 安全性?

    Facebook 和其他公司提供了一些小的 iframe 片段 我可以将它们放入我的网站中 例子 我想知道的是 如果我把这段代码放在我这边 他们加载到我页面中的代码可以访问我页面的 DOM 吗 如果是的话 我看到一些安全问题 同样 Face
  • 在 Haskell 中模拟路径依赖类型

    这是我想做的事情的一个简化示例 假设你有一个HList对 let hlist HCons 1 1 HCons 0 2 HCons 0 1 5 HNil 现在我想写一个函数replaceAll它将用相同类型的第一个 值 替换给定类型的所有 键
  • 随机选择ArangoDB中的一个文档

    有没有办法使用 AQL 从集合中随机返回文档 我想创建一个随机图用于测试目的 我还没有弄清楚如何从集合中随机选择文档 我希望我能够做这样的事情 db query RETURN nodes RAND 0 LENGTH nodes toArra
  • 在 React Native 中如何更改 Android 上的根视图背景颜色?

    我在网上读过一些教程 但大部分都是关于 iOS 的 或者一些关于 Android 的 但是使用旧版本的 React 现在一切都变了 如果我打开 MainActivity java 只有一种方法 Override protected Stri
  • 使用 LDAP Active Directory 身份验证的 ActiveMQ Web 控制台

    努力让 ActiveMQ Web 控制台使用 LDAP 并根据 Active Directory 进行身份验证 启动 MQ 时没有错误 出现用户名 密码登录框提示 但在插入正确的凭据时没有进展 Version 5 15 6 登录配置 amq
  • 为什么 C++ 不需要“new”语句来初始化 std::vector?

    考虑 bar h class bar Standard stuff omitted std vector
  • 如何使用 Moq.Dapper 模拟 QueryMultiple

    我正在编写单元测试用例 并且我成功地编写了单元测试用例Query 但我无法编写单元测试用例QueryMultiple 对于查询我是这样写的 IEnumerable
  • 设置视图中的所有变量

    问题 如何轻松更改 ForEach 语句内单独视图中的所有变量 查看代码中的注释 ContentView State var isShowing false var body some View Toggle IsShowing isOn
  • 如何在 MongoDB 中创建“触发器”

    我想创建一个触发器 其中插入的每个子文档都会在其他集合中增加一个字段 用于生成该集合的子文档计数 我尝试使用 MapReduce 创建搜索 但对于数百万个注册表来说速度非常慢 注意 我使用 C 但如果您喜欢展示如何在 Bson 中执行操作
  • 在 iPhone 上播放背景音频

    如何在应用程序运行时播放背景音频 Thanks 好的 这是 iOS4 和 iOS5 上背景声音的解决方案 绝对适用于 iOS 5 0 1 我仅使用 AVPlayer 对其进行了测试 它可能也适用于 MPMusicPlayerControll
  • 无法在 JavaScript 中创建多个 if 条件?

    我完全不知道为什么这不起作用 对我来说毫无意义 这将返回 语法错误 解析错误 if this attr id search opening true return false 为了更好地衡量 我还尝试了以下方法 得到了相同的结果 if 1
  • 使用 OpenCV 进行图像 alpha 合成

    我想实施这些步骤 这是我的代码 import cv2 from skimage io import import numpy as np imA cv2 imread C jpg kernel np ones 3 3 np uint8 im