Python: преобразование серого изображения в RGB

У меня серое изображение, и я хочу преобразовать его в RGB. Как мне это сделать в OpenCV?

image = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
cv2.imshow('Grey Scale Image', image)
cv2.waitKey()


backtorgb = cv2.cvtColor(image,cv2.COLOR_GRAY2RGB)
cv2.imshow('GRAY2RGB Image', backtorgb)
cv2.waitKey()

Попробовал GREY2RGB, но изображение не меняет. Где я ошибся?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
3 545
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Здесь есть фундаментальное недоразумение. Вы не можете удалить всю цветовую информацию, а затем волшебным образом воссоздать ее из ниоткуда.

Как только вы его удалите, он исчезнет.

Так для чего нужен GRAY2RGB? Он просто берет серый канал и реплицирует его в каналы R, G и B, поэтому у вас есть трехканальное изображение, но все 3 одинаковы, поэтому оно выглядит серым.

Благодарю за разъяснение.

alyssaeliyah 11.04.2018 10:29

Есть и другие способы сделать это, вам не нужен openCV, в конечном итоге изображение представляет собой матрицу, и вы можете сделать это с помощью умножения, посмотрите этот пост: Как преобразовать изображение RGB в оттенки серого в Python?

Обновлено: предоставление решения в случае изменения ссылки.

Изображение можно рассматривать как 3 матрицы, одну для красного, одну для зеленого и одну для синего, три цвета канала RGB, каждая с информацией для каждого пикселя в диапазоне от 0 до 255. Чтобы преобразовать его в изображение в градациях серого, необходимо необходимо суммировать все цвета по представлению их яркости, которая является уже известным коэффициентом, полученным в системе эквалайзера:

def rgb2gray(rgb):
    r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
    return gray

В openCV я не знаю, есть ли функция, но этого должно быть достаточно.

Но это как раз наоборот (вы писали про rgb в серый), просили серый в rgb.

Giacomo Catenazzi 11.04.2018 12:08

Другие вопросы по теме