У меня есть матрица со значениями от 0 до 1000, я могу легко масштабировать значения до диапазона 0 ~ 255, и это изображение в оттенках серого, если я покажу матрицу в opencv из Python.Создать цветное изображение из изображения в оттенках серого
Вопрос заключается в том, как преобразовать матрицу {Dimensions = (m, n)} в трехслойную матричную матрицу {Dimensions = (m, n, 3)}?
Это, как преобразовать изображение в оттенках серого в цветное изображение?
Я сделал эту функцию, но она не работает
import matplotlib.pyplot as plt
from itertools import product
def convertPicturetoColor(self, image, cmap=plt.get_cmap('rainbow')):
'''
Converts a greyscale [0~255] picture to a color picture
'''
a, b = np.shape(image)
m = np.zeros((a, b, 3))
for i, j in product(xrange(a), xrange(b)):
m[i,j,:] = np.array(cmap(image[i,j]))[0:3]
return m
К сожалению 'cv2.applyColorMap (Greyscale_picture, cv2.COLORMAP_RAINBOW)' возвращает изображение с одним слоем (тоже серого цвета) вместо 3-слойного изображения, что я ожидаю –
Входная матрица должна быть типа 'uint8' работать. Кроме того, он работает. –
о, извините, да. забыл упомянуть об этом. – berak