我有3个RGB图像,但是每个图像只有1个非零通道(即,一个红色通道在蓝色和绿色通道中具有0,因此我想将它们合并为一个具有正确颜色的RGB图像)每个频道。
我为自己的用语道歉,我不太了解该术语(这实际上对我的搜索查询没有帮助)
我认为您可以在此处使用Image.merge
并从每个图像中获取适当的频道。请注意,我在这里使用requests.get(...)
和BytesIO
从链接的图像中下拉,但是如果在本地有它们,则可以直接在文件名上直接使用Image.open(...)
。
from io import BytesIO
from PIL import Image
import requests
red = Image.open(BytesIO(requests.get('https://i.stack.imgur.com/EKQW4.jpg').content))
green = Image.open(BytesIO(requests.get('https://i.stack.imgur.com/Xel7l.jpg').content))
blue = Image.open(BytesIO(requests.get('https://i.stack.imgur.com/vyrqR.jpg').content))
combined = Image.merge('RGB',(red.getchannel('R'),green.getchannel('G'),blue.getchannel('B'))
combined.save('output_image_name.jpg')
这会给你类似的东西
,您还可以使用OpenCV:
blue = cv2.imread("blue.jpg")
red = cv2.imread("red.jpg")
green = cv2.imread("green.jpg")
merge = blue + red + green
cv2.imwrite('merge.jpg',merge)