Объединение цветов RGB картинок в одну картинку: Python, Cimpl - PullRequest
0 голосов
/ 08 ноября 2019

Проблема состоит в том, чтобы объединить три изображения RGB для создания оригинального изображения. Мне нужно взять на вход три отфильтрованные картинки в RGB одной и той же картинки. Один красный, один зеленый и один синий. Я попытался взять каждый пиксель в изображении и добавить его в кортеж, в котором хранятся его значения.

from Cimpl import *

red_image = load_image("red_image.jpg")
blue_image = load_image("blue_image.jpg")
green_image = load_image("green_image.jpg")

new_image = copy(red_image)

for pixel in new_image:

    x, y, (r, g, b) = pixel

for bluePixel in blue_image:
    xBlue, yBlue, (rBlue, gBlue, bBlue) = bluePixel
    new_colour = create_color(r+rBlue,g+gBlue,b+bBlue)
    set_color (new_image, x, y, new_colour)


for greenPixel in green_image:
    xGreen, yGreen, (rGreen, gGreen, bGreen) = greenPixel
    new_colour = create_color(r+rGreen,g+gGreen,b+bGreen)
    set_color (new_image, x, y, new_colour)    

show(red_image)
show(new_image)

Кажется, я снова получаю ту же картинку, а не «комбинированное изображение»красный, синий и зеленый фильтры (red_image.jpg, потому что я использую это как "new_image")

1 Ответ

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

Давайте разберемся, у вас есть 3 изображения, у каждого из них есть 1 канал, и вы хотите объединить их в 1 изображение с 3 каналами? Если я прав, попробуйте это.

import cv2
import numpy as np

red = cv2.imread('red.jpg')
green = cv2.imread('green.jpg')
blue = cv2.imread('blue.jpg')

image = np.dstack((blue, green, red)) # combine them, I'm not sure should I use red or blue first here though

cv2.imwrite('image.jpg')  # save it

cv2.imshow('img', image)  # show it
cv2.waitKey()

Обратите внимание, что opencv использует BGR вместо RGB.

Если у вас еще нет cv2 и numpy.

pip install numpy
pip install opencv-python
...