Ваш вопрос не очень точный и точный, и его можно понять по-разному.
Прежде всего, нет фактического преобразования цвета 1D в 3D, COLOR_GRAY2BGR преобразует только 1-канальный серый в 3-канальный серый. Это преобразование не добавляет цвета, просто измените внутреннее представление изображения, чтобы мы могли сохранить его в видео. Цвет не может восстановиться. Поскольку это трехмерная карта глубины, я думаю, что вам нужна функция цветового отображения, как на картинке ниже.
![enter image description here](https://i.stack.imgur.com/IEJfk.png)
Не уверен, что ваши данные представляют собой окончательное несоответствие или конечную глубину. Таким образом, вы должны выяснить это самостоятельно позже. Но общая идея заключается в том, чтобы содержать его в cv :: Mat и использовать функцию цветового отображения opencv для раскрашивания.
Предположим, data_image_1D - это массив np
import numpy as np
import cv2
data_image_1D # this is the np array that you got it from somewhere
bw_img = np.reshape(data_image_1D,(rows,cols))
#rows and cols are the size of the depth image that you have. Try to see if you can get this convetsion working.
im_color = cv2.applyColorMap(bw_img, cv2.COLORMAP_JET)
cv2.imshow("im_color",im_color)
cv2.imshow("bw_img",bw_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Но, тем не менее, вам приходится иметь дело с проблемой отрицательного неравенства, минимального несоответствия и максимального несоответствия. Тот, который я могу оставить вам
Для более
отображение данных или отображение пользовательских цветов вы можете следовать этому руководству https://www.learnopencv.com/applycolormap-for-pseudocoloring-in-opencv-c-python/
редактировать
Я думаю, что вы хотите, может быть просто функция слияния. Посмотреть это
import numpy as np
import nrrd
######you orginal code put it here###
bw_img = np.reshape(data_image_1D,(rows,cols))
im_color = cv2.merge([bw_img, bw_img, bw_img])
nrrd.write(filename, im_color)# Write to a NRRD file