我试着在这里举一个例子: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')
有人知道我下一步可以试试什么吗?
1条答案
按热度按时间jaql4c8m1#
检查numpy阵列的类型。我的意思是:
几乎可以肯定
uint8
这意味着整数在0和255之间。当你把这个范围内的一个数字除以255,你会得到很多零,而实际上你需要很多介于0和1之间的浮点数。尝试除以255.0,然后检查
dtype
那么。