我正在尝试混合 3 张图像。
- 其次,我尝试叠加
effect.png
在上一步的结果图像上。
结果是这样的
我正在使用描述的 opencv 混合 here .我尝试使用 cv2.addWeighted
但结果是一样的
# blending function
def img_overlay(background, overlay, x_offset, y_offset):
y1, y2 = y_offset, y_offset + overlay.shape[0]
x1, x2 = x_offset, x_offset + overlay.shape[1]
alpha_s = overlay[:, :, 3] / 255.0
alpha_l = 1.0 - alpha_s
for c in range(0, 3):
background[y1:y2, x1:x2, c] = (alpha_s * overlay[:, :, c] +
alpha_l * background[y1:y2, x1:x2, c])
return background
# First step
background = cv2.imread('base.png')
overlay = cv2.imread('photo.png', -1)
x_offset = 386
y_offset = 70
base_photo = img_overlay(background, overlay, x_offset, y_offset)
# Second step
overlay = cv2.imread('effect.png', -1)
final_photo = img_overlay(base_photo, overlay, 0, 0)
cv2.imwrite(result, final_photo)
如何修复 img_overlay
函数,使其正确覆盖 effect.png
?
最佳答案
问题是您的“效果”图像比例不同。通过除以 255 来更正此问题。
您的“第二步”应该如下所示:
# Second step
overlay = cv2.imread('effect.png', -1)
overlay = overlay / 255.0
final_photo = img_overlay(base_photo, overlay, 0, 0)
这对我有用。
关于python - 用 cv2 叠加两个图像结果作为噪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58718523/