【AI-1000问】为什么OpenCV读取的图像格式是BGR?

在进行图像处理时,我们常常依赖opencv这一强大工具。然而,有趣的是,当我们使用opencv读取图像时,得到的数组却是bgr格式,而不是我们更为常见的rgb格式。这究竟是为什么呢?这个问题值得我们深思。

作者/编辑 汤兴旺

我们通过OpenCV和PIL读取同一张图片,并对比其结果:

OpenCV读取图片:

import cv2

filename="/home/tangxingwang/01.jpeg"

img = cv2.imread(filename)

print(img)

PIL读取图片:

import numpy as np

from PIL import Image

filename="/home/tangxingwang/01.jpeg"

img=Image.open(filename)

img_arr=np.array(img)

print(img_arr)

通过上述对比,我们可以清楚地看到OpenCV读取的图片格式与PIL不同,前者是BGR格式,后者是RGB格式。那么,为什么会这样呢?

解答:OpenCV于1999年由Intel创建,当时主流的摄像头制造商和软件供应商提供的图像采集格式是BGR。此外,位图BMP是最简单的图像格式,也是Windows显示图片的基本格式,其文件扩展名为*.BMP。在Windows系统中,任何格式的图片文件(包括视频播放)都需要转换为位图才能显示,而位图BMP的格式正是BGR。由于BGR在当时被广泛使用,OpenCV的早期开发者便选择了BGR颜色格式,这一选择一直沿用至今,成为了一种标准。

思考

今天的问题就讨论到这里了,希望能解答您心中的疑惑。如果您在学习深度学习的过程中遇到其他有趣且不解的问题,欢迎留言,说不定下一问就能解答您的问题呢?