【问题标题】:Access the color palette of an indexed image in C访问 C 中索引图像的调色板
【发布时间】:2012-06-23 13:35:48
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

查看文档以获取更多信息

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

【讨论】:

    【解决方案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 中从头开始创建调色板图像

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

    【讨论】:

      猜你喜欢
      • 2012-09-14
      • 1970-01-01
      • 2022-01-04
      • 2012-07-02
      • 2011-03-16
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      相关资源
      最近更新 更多