imread:为什么OpenCV是BGR格式而不是RGB?

 2021-06-30 08:14    77  

视频加载中...

imread:为什么OpenCV是BGR格式而不是RGB?

做图像处理的我们应该都知道imread,OpenCV是我们必备的一个工具,我们在使用OpenCV读取图像时你应该也发现了读取出来的数组居然是BGR格式,而不是我们听的最多,用的最多的RGB格式,这是为什么呢?有同学思考过这个问题吗?

imread:为什么OpenCV是BGR格式而不是RGB?

我们用OpenCV和PIL读取下面一张图片,对比看下结果imread:

OpenCV读取图片imread:

import cv2filename="/home/tangxingwang/01.jpeg"img = cv2.imread(filename)print(img)

PIL:读取图片:

import numpy as npfrom PIL import Imagefilename="/home/tangxingwang/01.jpeg"img=Image.open(filename)img_arr=np.array(img)print(img_arr)

从上面我们的对比我们明显就看出OpenCV读取图片的内容和PIL不一样,因为OpenCV是BGR格式,PIL是RGB格式,为什么?

解答:OpenCV在1999年由Intel建立,当时主流的摄像头制造商和软件供应商提供的摄像头采集的图像的通道排列顺序为BGR,另外对于图片,位图BMP是最简单的,也是Windows显示图片的基本格式,其文件扩展名为*.BMP。在Windows下,任何格式的图片文件(包括视频播放)都要转化为位图才能显示出来,各种格式的图片文件也都是在位图格式的基础上采用不同的压缩算法生成的,值得注意的是位图BMP的格式就是BGR。正是基于BGR在当时被广泛使用,于是早期OpenCV开发者就选择BGR颜色格式,这也就成为了一种规范一直用到现在。

本文标签:格式为什么不是

原文链接:https://www.xgfox.com/bcrm/176.html

本文版权:如无特别标注,本站文章均为原创。