【问题标题】:Read in image as grayscale, but need the number of colour channels in the original colour image以灰度读取图像,但需要原始彩色图像中的颜色通道数
【发布时间】:2020-12-17 19:59:49
【问题描述】:

我正在使用 OpenCV Python 读取图像。我以灰度读取它们,因为读取全彩色图像很昂贵。但是,我仍然需要识别原始图像中的颜色通道数。

是否有一种简单的方法可以使用 EXIF 标签、PIL 或任何其他库来提取图像中颜色通道的数量,而无需读取全彩图像?

【问题讨论】:

  • 它们是否总是特定的格式,例如TIFF、GIF、PNG、BMP?如果是这样,可能有比整个 ImageMagick 套件更轻的东西?你在哪个平台上?

标签: python image opencv


【解决方案1】:

imagemagick:$ magick identify -ping <file> 尽可能少地读取文件并转储图片文件的一些基本属性。讨论:https://legacy.imagemagick.org/discourse-server/viewtopic.php?t=18042

您可以使用 python 的 subprocess 模块运行和阅读它。 check_output() 可能在这里最有用。

我刚刚在一个 5 GB 的 TIFF 文件上尝试过,它很快就运行了。

您将不得不对该行进行一些解释。它在这里说“8位sRGB”,这意味着三个通道。 sRGB 是一个 RGB 颜色空间。

您可以传递-format ... 和格式字符串来获取自定义输出。

imagemagick 有一个命令行界面,但我听说它也有可以从 python 调用的 API。其他详细说明:Can I access ImageMagick API with Python?

如果这不合适,您将需要使用特定的库(libjpeg、libpng、libtiff、...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-06
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    相关资源
    最近更新 更多