我怎么知道图像是RGB还是BGR格式?

use*_*121 7 java rgb opencv image-processing bgr

有没有办法事先知道用作系统输入的图像是RGB还是BGR格式?

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

更新:

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

She*_*man 10

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

  • BGR订单(如果您使用过)cv2.imread()
  • RGB顺序(如果使用)mpimg.imread()(假设import matplotlib.image as mpimg

如果您不知道文件的打开方式,那么对于Java来说,可接受的答案 BufferedImage非常有用。
我想找到一种在Python中做同样的事情!


Ale*_* VI 7

当您使用 opencv (imread, VideoCapture) 时,图像会加载到 BGR 色彩空间中。

  • 您的答案是正确的,但您可以添加一些支持文档:http://docs.opencv.org/java/2.4.9/org/opencv/highgui/Highgui.html#imread(java.lang.String)“注意:对于彩色图像,解码图像的通道将以 BGR 顺序存储。” (2认同)

Jea*_*nès 2

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