gpt4 book ai didi

python - 从另一个图像中删除一个重叠图像

转载 作者:行者123 更新时间:2023-12-02 16:56:28 25 4
gpt4 key购买 nike

所以我有两张图片,原始一张和一张,应该是它上面的覆盖图。重叠图像是半透明的,比方说白色,alpha为0.5。

我可以将半透明的透明胶片覆盖在原始透明的胶片上,但是该如何反转呢?因此,在此代码示例中,如何仅通过使用“bld”和“fil”变量来获取“org”变量。有没有一种方法可以做到这一点?

import cv2

import numpy as np
import cv2

# Load a colored image and a filter
org = cv2.imread('original.png', cv2.CV_LOAD_IMAGE_UNCHANGED)
fil = cv2.imread('filter.png', cv2.CV_LOAD_IMAGE_UNCHANGED)

# Overlay the filter on the original image
bld = cv2.addWeighted(org,0.5,fil,0.5,0)

# Reverse the process?

最佳答案

好...用于线性混合bld = a*org + (1-a)*fil(在您的示例中a = 0.5)

所以org = (bld - (1-a)*fil) / a
如果我没记错的话,这就是org = 1/a * bld + (1-1/a) * fil

带有a = 0.5:org = 2*bld -1*fil
在代码中:

a = 0.5
org = cv2.addWeighted(bld,1/a,fil,1-1/a, 0)

要么
org = cv2.addWeighted(bld,2,fil,-1, 0)

您也可以使用 org = 2*bld - fil,但openCV会截断这些值,如果它们超出了例如对于8U类型为255(称为saturate_cast),因此如果您在计算之前不转换为16/32位类型,则此方法将无效。

通常,如果您没有线性混合,则必须将第一个公式更改为 bld = a*org + b*fil并从中计算其余公式。

关于python - 从另一个图像中删除一个重叠图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28040625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com