访问C中索引图像的调色板

时间:2012-06-21 10:21:48

标签: opencv gif bmp color-palette indexed-image

假设我想要原样读取索引图像(不是3通道24位图像) 我希望阅读和修改索引图像的调色板。在opencv中,我没有遇到任何提取图像调色板的功能! 另外我想知道调色板的数据类型。 我使用opencv在c编码 有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

嗯,我不认为OpenCV有任何功能可以做到这一点。 cvLoadImage()或imread()函数使用libpng为编解码器直接读取图像。

查看文档以获取更多信息

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

答案 1 :(得分:1)

感谢图片链接。首先,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中从头开始创建调色板图像

我还没有找到任何办法。