Доступ к цветовой палитре индексированного изображения в C
Предположим, я хочу прочитать индексированное изображение как есть (не 3-канальные 24-битные изображения), которое я хочу прочитать и изменить цветовую палитру индексированного изображения. В opencv я не встречал таких функций, которые бы выделяли цветовую палитру изображения! Также я хотел бы знать тип данных палитры. Я кодирую в C с помощью OpenCV Любая помощь?
2 ответа
Спасибо за ссылку на изображение. Во-первых, OpenCV не поддерживает GIF (как связано с Ameya005). Однако существуют другие форматы индексированных изображений палитры. Он не мог получить индексированное изображение палитры в OpenCV, поэтому, если я что-то пропустил, я не думаю, что вы сможете работать с индексированными палитрами непосредственно в OpenCV. Похоже, вам нужно альтернативное решение. Зачем вам нужно работать напрямую с индексированными палитрами?
Второй вариант ниже, вероятно, позволит вам иметь индексы в OpenCV (палитра будет потеряна), если это все, что вам нужно.
Вот что я попробовал:
Загрузить палитру PNG (преобразуется в 3-канальный цвет)
import cv2
im = cv2.imread("mandril_color.png")
im.shape # returns (512, 512, 3) so it's been converted to 3-channel color
Загрузить палитру GIF (преобразуется в оттенки серого)
Я предполагаю, что это преобразование в оттенки серого с индексом, используемым как интенсивность, но я не проверял это.
import cv2
import Image
import numpy as np
im_pil = Image.open("mandril_color.gif")
im_cv = np.asarray(im_pil)
im_cv.shape # returns (512, 512) so it's become grayscale
Создайте палитровое изображение с нуля в OpenCV
Я не нашел способа сделать это.
Ну, я не думаю, что OpenCV имеет какую-либо функцию для этого. Функции cvLoadImage() или imread() используют libpng для кодеков для непосредственного чтения изображений.
Проверьте документацию для получения дополнительной информации