假设我想按原样读取索引图像(不是 3 通道 24 位图像)我希望读取和修改索引图像的调色板。在opencv中,我没有遇到任何提取图像调色板的函数!我也想知道调色板的数据类型。我正在使用opencv在c中编码任何帮助?
问问题
2555 次
2 回答
1
好吧,我不认为 OpenCV 有任何功能可以做到这一点。cvLoadImage() 或 imread() 函数使用 libpng 编解码器直接读取图像。
查看文档以获取更多信息
于 2012-06-21T16:01:49.470 回答
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 中从头开始创建调色板图像
我还没有找到任何方法来做到这一点。
于 2012-06-22T11:33:47.050 回答