【问题标题】:How can I know if the image is in RGB or BGR format?如何知道图像是 RGB 还是 BGR 格式?
【发布时间】:2015-08-28 10:18:42
【问题描述】:

有什么方法可以提前知道用作系统输入的图像是 RGB 还是 BGR 格式?

我正在使用带有 java API 的 OpenCV,我想将输入图像转换为灰度或 L*a*b* 颜色空间,但在 OpenCV 中,您必须首先指定要转换的图像是 RGB 还是BGR。

我使用的图像类型是.jpg.png

【问题讨论】:

  • 取决于您使用的图像类型...您使用的是哪种图像类型?
  • @CoderNeji 请参阅上面的更新部分
  • 我认为@Jean-BaptisteYunès 给了您正确的答案,首先将图像处理为缓冲图像,然后您可以为 RGB 或 BGR 格式相应地设置标志
  • 如果您使用 OpenCV 函数加载图像,它将是 BGR,据我所知,仍然没有检查色彩空间的功能。

标签: java opencv image-processing rgb bgr


【解决方案1】:

如果您的图像是BufferedImage,那么您可以使用getType() 询问他的类型,并针对几个常量进行测试(请参阅:BufferedImage)。

【讨论】:

    【解决方案2】:

    当你使用 opencv (imread, VideoCapture) 时,图像被加载到 BGR 颜色空间中。

    【讨论】:

    • 您的答案是正确的,但您可以添加一些支持文档:docs.opencv.org/java/2.4.9/org/opencv/highgui/… "注意:对于彩色图像,解码后的图像将具有按 BGR 顺序存储的通道。"
    • 以后会努力做的,谢谢指教
    【解决方案3】:

    如果您正在读取图像文件,或者您有权访问读取文件的代码,请知道它是:

    • BGR 如果您使用过cv2.imread(),请订购
    • RGB 如果您使用了mpimg.imread(),则订购(假设import matplotlib.image as mpimg

    如果您不知道文件是如何打开的,accepted answer BufferedImage 非常适合 Java。
    我想找到一种方法在 Python 中做同样的事情!

    【讨论】:

    • 重要的是要注意,对于 matplotlib,RGB 专门用于 JPG 图像。 PNG 图像将加载为 BGRA。
    猜你喜欢
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多