在使用pillow/numpy对任何分割带执行.dot操作后,分割图像无法合并

2024-04-26 04:33:00 发布

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

我正在尝试用枕头和纽比校正图像中的颜色。使用即时拆分()与np.数组. 在

我想把红边上的所有颜色都放大,但找不到办法。在

我尝试过各种各样的方法,经过大量的谷歌搜索后,我希望这将是一个解决方案:

from PIL import Image
import numpy as np

im=Image.open('test.jpg')
r,g,b=im.split() 

datar = np.array(r)
datag = np.array(g)
datab = np.array(b)

rm=0.4 # the value I would like to multiply all red pixels by

datar=datar.dot(rm) # this works, but turns the values in the array into floats
datar=datar.astype(int) # I was hoping this would solve it

im=Image.merge("RGB", (Image.fromarray(datar), Image.fromarray(datag), Image.fromarray(datab)))

我可以对数组执行很多操作,合并成功,但尝试此操作会出现以下错误:

^{pr2}$

在应用.dot和.astype(int)之前和之后,数组看起来是相同的,并且值被正确地相乘。在


Tags: thermimageimport颜色np数组array
1条回答
网友
1楼 · 发布于 2024-04-26 04:33:00

Image.merge失败,因为rgb图像不是同一模式(请参见PIL Image modes)。您可以这样检查模式:

>>> Image.fromarray(datar).mode
'I'
>>> Image.fromarray(datag).mode
'L'

原因是numpy数组的类型:

^{pr2}$

要修复此问题,请替换此项:

^{3}$

有了这个:

datar = datar.astype('uint8')

相关问题 更多 >