参考  OpenCV使用BGR而非RGB格式 - 云+社区 - 腾讯云

日常开发和交流时,我们习惯将图片的颜色通道按照RGB(red, green, blue)进行排列。闲来无聊,在把玩卷积神经网络模型时发现OpenCV并没有按照这个顺序读入图片。好奇地搜索一下OpenCV为什么使用BGR而非RGB。看到这篇博文:Why does OpenCV use BGR color format。

仔细阅读这篇博文,作者在使用matplotlib显式OpenCV读入的图片,发现图片显示很怪异。
原图如下:

使用OpenCV读取在matplotlib上显示的结果

文中作者在一个大会上问了OpenCV的作者为什么使用BGR格式而不是使用RGB。他得到的答案总结起来就是由于历史的原因。文中还用了一个很搞笑的故事来说明这个事实:为什么美国的标准铁路轨距为4英尺8.5英寸。对这个故事有兴趣的可以看原博文。

那么这个历史原因是什么:
早期开发者使用BGR作为颜色的空间的原因在于:那个时候的BGR格式在相机制造厂商和软件提供商之间比较受欢迎。例如。在Windows中,当使用 COLORREF 指定颜色值时,使用BGR格式0x00bbggrr。

OpenCV使用BGR而非RGB格式相关推荐

  1. OpenCV系列 | BGR图像转换为RGB图像

    目录 方法一 方法二 使用OpenCV加载图像时,默认使用BGR的格式,而使用matplotlib显示图像时又采用RGB的格式,因此显示图像时,会显得非常奇怪. 如以一张船的照片为例,原图如下: 使用 ...

  2. OpenCV读出来的是按BGR存储的,如何转变成传统的RGB格式

    opencv 视频帧的数据是按按BGR存储的,想转变成传统的RGB格式便于和其他库对接使用 方法1 核心代码 cv2.cvtColor(Frame,cv2.COLOR_BGR2RGB) ,其中 Fra ...

  3. OpenCV - 将图片转换为深度学习模型输入格式,BGR通道转RGB,图片归一化,HWC转CHW

    文章目录 1 将图片转换为深度模型输入格式 1.1 自行进行转换 1.1.1 BGR通道转RGB通道 1.1.2 图片归一化 1.1.3 HWC转CHW 1.2 使用cv::dnn::blobFrom ...

  4. 为什么opencv使用BGR 格式,而不是RGB格式?

    https://www.learnopencv.com/why-does-opencv-use-bgr-color-format/ 原因其实很简单啊,这个解释非常的风趣,"古罗马的马屁股&q ...

  5. OpenCV教程(14)问题思考---- 深度学习中为什么普遍使用BGR而不用RGB?

    Table of Contents 1. 发现问题 现象: 2. 提出问题 问题:为什么使用BRG描述图像,而非RGB通道? 3. 合理假设 4. 求解 stackoverflow解答 1. 发现问题 ...

  6. Opencv 深度学习中为什么普遍使用BGR而不用RGB?

    因为那个年代比较流行BGR,opencv使用了BGR,但现在比较流行RGB,这是历史遗留问题,opencv也不好改回来了. 参考文章:OpenCV教程(14)问题思考---- 深度学习中为什么普遍使用 ...

  7. 在Python中使用OpenCV将RGB格式的图像转换为HSV格式的图像

    An HSV is another type of color space in which H stands for Hue, S stands for Saturation and V stand ...

  8. 【DSP开发】【VS开发】YUV与RGB格式转换

    [视频处理]YUV与RGB格式转换 YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式. 因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式. RGB与 ...

  9. YUV / RGB 格式及快速转换算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确 ...

  10. python–颜色英文与RGB格式互转

    python–颜色英文与RGB格式互转 使用pip安装webcolors pip install webcolors 1- 导入webcolors import webcolors 2-英文转RGB ...

最新文章

  1. Java 8新特性——default方法(defenece方法)介绍
  2. C++中const与指针
  3. 固定UILabel宽度分行显示
  4. 如何在anaconda环境下安装tensorflow/pytorch/keras等
  5. java线程池案例_使用Executors 和 ThreadPoolExecutor实现Java线程池案例
  6. 要想深入理解mysql索引?这16个点你必须要了解!
  7. UE3 供游戏性程序员的使用的性能最优化方法
  8. java 下面的while语句退出时_java 下面的while语句退出时
  9. linux 网络 路由,网络路由的顺序在Linux中是否重要?
  10. 【数字信号处理】基于matlab GUI IIR低通+FIR高通信号时域+频谱分析【含Matlab源码 1029期】
  11. VS2019的动态库dll在lua中调用及lua.exe和luac.exe的使用方法
  12. Linux中rpm详解
  13. three.js透视投影相机PerspectiveCamera
  14. 硬脆材料划片机的工艺参数研究
  15. Linux遇到Aborted (core dumped)
  16. 八边形类 Octagon
  17. 信号类型(雷达)——连续波雷达(二)
  18. 双十一投影买什么?投影仪该如何选择?家用投影详细选购攻略
  19. 长江口陆地、岛屿变迁与沙地人迁徙史.doc
  20. oracle监控pga,监控PGA最大空间、分配

热门文章

  1. CFAR检测MATLAB仿真
  2. 怎么用电脑操控自己的手机 怎样用电脑控制手机?
  3. Silvaco TCAD 2014 Win10下安装说明!
  4. 苹果手机投屏器 及如何使用设置连接电脑投屏教程
  5. js定时刷新页面数据
  6. 【院校信息】2021北京航空航天大学计算机考研数据汇总
  7. 潇洒老师教你注塑模具使用顶针油需要注意的问题
  8. wps文字表格制作拼音田字格模板_最新用WPS表格快速制作拼音田字格的方法
  9. 淘宝淘口令n年前算法
  10. JDK 内置的轻量级 HTTP 服务器 --- HttpServer