Объединение трех изображений RGB в одно изображение RGB - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть три изображения RGB, но у каждого есть только 1 ненулевой канал (т.е. у одного есть красный канал с нулями в синем и зеленом каналах), и я хочу объединить их в одно изображение RGB с правильнымканал от каждого.

Я прошу прощения за мою фразу, я не знаю много терминологии (которая действительно не помогает моим поисковым запросам)

Вот мои изображения: Синий Зеленый Красный

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Вы также можете использовать 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)

enter image description here

0 голосов
/ 06 ноября 2019

Я думаю, что вы можете использовать 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')

Иэто даст вам что-то вроде:

enter image description here

...