Преобразование изображения в градациях серого в исходный цветовой формат с использованием 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)