从另一个imag中删除覆盖图像

2024-04-26 05:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有两个图像,一个是原始的,另一个应该是覆盖在上面的。叠加图像是半透明的,比如说白色,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?

Tags: theorg图像imageimportpngloadfilter
1条回答
网友
1楼 · 发布于 2024-04-26 05:04:14

嗯。。。对于线性混合bld = a*org + (1-a)*fil(在您的示例中a = 0.5

所以org = (bld - (1-a)*fil) / a

如果我没有错的话,那就是{}。在

使用a = 0.5org = 2*bld -1*fil

代码:

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

或者

^{pr2}$

您也可以使用org = 2*bld - fil,但是如果值超过了8U类型的255(称为饱和转换),openCV会截断这些值,因此,如果在计算之前不转换为16/32位类型,这将不起作用。在

一般来说,如果没有线性混合,则必须将第一个公式更改为bld = a*org + b*fil,然后根据该公式计算其余公式。在

相关问题 更多 >