Доступ к цветовой палитре индексированного изображения в 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 для кодеков для непосредственного чтения изображений.

Проверьте документацию для получения дополнительной информации

http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread

Другие вопросы по тегам