我正在使用PIL在Python中进行一些图像处理,我需要从一系列图像中提取亮度层,并使用numpy对它进行一些处理,然后将编辑后的亮度层放回图像中并保存。问题是,我似乎无法获得YCbCr格式的图像的任何有意义的表示,或者至少我不了解PIL在YCbCr中给了我什么。PIL文档声称YCbCr格式提供了三个通道,但是当我使用np.asarray从图像中获取数据时,我获得了4个通道。好的,所以我认为其中一个必须为alpha。
这是我用来测试此过程的一些代码:
import Image as im
import numpy as np
pengIm = im.open("Data\\Test\\Penguins.bmp")
yIm = pengIm.convert("YCbCr")
testIm = np.asarray(yIm)
grey = testIm[:,:,0]
grey = grey.astype('uint8')
greyIm = im.fromarray(grey, "L")
greyIm.save("Data\\Test\\grey.bmp")
Run Code Online (Sandbox Code Playgroud)
我期望图像的灰度版本,但是我得到的是这个混乱的混乱:
有人可以向我解释我要去哪里哪里吗?matlab中的相同代码完全符合我的预期。