我需要对Ycbcr颜色空间的各个通道应用一些转换。
我有一个tiff格式图像作为源,我需要将其转换为ycbcr颜色空间。我无法将不同的频道成功保存为单独的图像。我只能使用以下代码提取发光通道:
delivery = Selector(response).xpath('//*[@id="ddmDeliveryMessage"]').extract()[0]
delivery = self.rx.sub(' ', re.sub(r'<[^>]*?>', '', delivery).replace("\n","")).strip()
有人可以帮忙。
谢谢
答案 0 :(得分:1)
这是我的代码:
import numpy
import Image as im
image = im.open('1.tiff')
ycbcr = image.convert('YCbCr')
# output of ycbcr.getbands() put in order
Y = 0
Cb = 1
Cr = 2
YCbCr=list(ycbcr.getdata()) # flat list of tuples
# reshape
imYCbCr = numpy.reshape(YCbCr, (image.size[1], image.size[0], 3))
# Convert 32-bit elements to 8-bit
imYCbCr = imYCbCr.astype(numpy.uint8)
# now, display the 3 channels
im.fromarray(imYCbCr[:,:,Y], "L").show()
im.fromarray(imYCbCr[:,:,Cb], "L").show()
im.fromarray(imYCbCr[:,:,Cr], "L").show()
答案 1 :(得分:0)
只需使用.split()
方法将图像拆分为不同的通道(在PIL中称为 band )。不需要使用numpy。
(y, cb, cr) = ycbcr.split()
# y, cb and cr are all in "L" mode.
完成转换后,使用PIL.Image.merge()
再次合并它们。
ycbcr2 = im.merge('YCbCr', (y, cb, cr))