How can I know if the image is in RGB or BGR format?

38.3k views Asked by At

Is there any way to know in advance if an image used as an input to a system is in RGB or BGR format?

I am using OpenCV with java API and I would like to convert an input image into grayscale or L*a*b* color space, but in OpenCV you have to specify first whether the image you want to convert is in RGB or BGR.

The type of the image I am using is either .jpg or .png.

3

There are 3 answers

0
Jean-Baptiste Yunès On BEST ANSWER

If your image is a BufferedImage then you can ask for his type with getType(), and test against the several constants (see: BufferedImage).

2
Alexander Leon VI On

When you use opencv (imread, VideoCapture), the images are loaded in the BGR color space.

1
SherylHohman On

If you are reading in the image file, or you have access to the code that reads in the file, know it is:

  • BGR order if you used cv2.imread()
  • RGB order if you used mpimg.imread() (assuming import matplotlib.image as mpimg)

If you don't know how the file was opened, the accepted answer BufferedImage is great for Java.
I would like to find a way to do the same in Python!