尝试使用numpy合并alpha图像时出现获取值错误

vaqhlq81  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(354)

我试着在这里举一个例子:https://note.nkmk.me/en/python-opencv-numpy-alpha-blend-mask/
在最后两行之前,我的代码运行良好。所以这部分是有效的。。。

import numpy as np
from PIL import Image, ImageOps

...

im1 = Image.open("G:\\u3road3.jpg")
im2 = Image.open("G:\\u3road1.jpg").resize(im1.size,Image.BILINEAR)

mask = Image.open("G:\\u3RoadMask2.jpg").convert('L')
mask2 = mask.resize(im1.size,Image.BILINEAR)

src1 = np.array(im1)
src2 = np.array(im2)
mask1 = np.array(mask2)
mask1 = mask1 / 255

...
但如果我添加这一行,它将失败并出现“valueerror”:

dst = src1 * mask1 + src2 * (1 - mask1)

因此,我甚至没有到达保存图像的最后一行:

Image.fromarray(dst.astype(np.uint8)).save('G:/testes.jpg')

有人知道我下一步可以试试什么吗?

jaql4c8m

jaql4c8m1#

检查numpy阵列的类型。我的意思是:

print(src1.dtype, src2.dtype, mask1.dtype)

几乎可以肯定 uint8 这意味着整数在0和255之间。当你把这个范围内的一个数字除以255,你会得到很多零,而实际上你需要很多介于0和1之间的浮点数。
尝试除以255.0,然后检查 dtype 那么。

相关问题