Opencv 在C语言中访问索引图像的调色板

Opencv 在C语言中访问索引图像的调色板,opencv,gif,bmp,color-palette,indexed-image,Opencv,Gif,Bmp,Color Palette,Indexed Image,假设我想按原样读取索引图像(不是3通道24位图像) 我希望阅读和修改索引图像的调色板。在opencv中,我没有遇到过任何提取图像调色板的函数! 我还想知道调色板的数据类型。 我正在使用opencv用c编写代码 有什么帮助吗?嗯,我认为OpenCV没有任何功能来完成这项工作。cvLoadImage()或imread()函数使用libpng作为编解码器直接读取图像 查看文档以了解更多信息 谢谢你的图片链接。首先,OpenCV不支持GIF(如Ameya005链接)。但是,还有其他索引调色板图像格式。它

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

嗯,我认为OpenCV没有任何功能来完成这项工作。cvLoadImage()或imread()函数使用libpng作为编解码器直接读取图像

查看文档以了解更多信息


谢谢你的图片链接。首先,OpenCV不支持GIF(如Ameya005链接)。但是,还有其他索引调色板图像格式。它无法在OpenCV中获得索引调色板图像,因此除非我遗漏了什么,否则我认为您将无法直接在OpenCV中使用索引调色板。听起来你需要一个替代方案。为什么需要直接使用索引选项板

不过,下面的第二个选项可能会让您在OpenCV中拥有索引(调色板将丢失),如果您只需要这些索引的话

以下是我尝试过的:

加载调色板PNG(转换为3通道颜色)

加载调色板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中从头开始创建调色板图像


我还没有找到任何方法来做到这一点。

+1我也是,非常想知道这一点……你能发布一个链接到一个示例调色板图像吗?我制作了一个256色的调色板png来试验你的问题,但当我加载它时,数据显示为通常的3字节集。这是我的示例图像。这是一个单通道8位图像对不起,链接不好。。这应该管用!
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