Преобразование изображения в градациях серого в исходный цветовой формат с использованием Python

Привет! В настоящее время я работаю над тем, чтобы попытаться преобразовать изображение в оттенках серого в исходный цветовой формат, используя Open CV в Python.

import cv2

img = cv2.imread('bw.jpg')

img = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB)


cv2.imwrite('gray_image.png',gray_image)

выполнение этого приводит к ошибке:

error: (-215) scn == 1 && (dcn == 3 || dcn == 4) in function cv::cvtColor

Код в Python Imaging Library также приветствуется. Любая помощь будет оценена.

Спасибо

2 ответа

Решение

Я предполагаю, что вы пытаетесь преобразовать одноканальное изображение в трехканальное изображение в градациях серого. Вы читаете изображение как img = cv2.imread('bw.jpg')по умолчанию, если вы не передаете какой-либо параметр cv2.imread()затем он считывает 3-канальное изображение независимо от исходного количества каналов в изображении. Вы можете просто удалить строку cv2.cvtColor(img, cv2.COLOR_GRAY2RGB)как img Это уже 3-канальное изображение с информацией только в градациях серого.

Однако, если вы заблуждаетесь в том, что в OpenCV есть функция заливки цветов RGB в изображение в градациях серого, вы, вероятно, используете неверную библиотеку. Вы можете проверить другие проекты с открытым исходным кодом, такие как это, которые раскрасить ваше изображение с помощью глубокого обучения.

Смотрите встроенный комментарий, где была допущена ошибка.

import cv2

img = cv2.imread('bw.jpg')

x = img.shape

# check for color or gray-scale image type.
if x[3] == 3:

   print 'Got color image'
   # variable "gray_image" linked to result.
   gray_image = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB)

   cv2.imwrite('gray_image.png',gray_image) # varname no longer img > gray_image.

else:
    print 'Got black/white, single channel image.'
    url = 'https://github.com//gustavla//autocolorize'
    print "Using ZdaR's posted solution from %s" % (url)
Другие вопросы по тегам