0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么OpenCV使用BGR颜色格式?

新机器视觉 来源:OpenCV与AI深度学习 作者:OpenCV与AI深度学习 2022-12-16 14:57 次阅读

良好设计的要素之一是最小惊讶原则(又称最小意外原则)。一个好的直观设计让用户不会思考。

当你看到门上的把手时,你想拉它。当你看到一扇带有金属板的门时,你想推它。这些是门的使用者的期望,当门的设计者尊重这些期望时,用户可以在不施加任何精神能量的情况下使用门。但如果设计与用户的期望不一致,那么简单的开门动作就会成为一种心理负担。

OpenCV 是一个非常有用的库,但是说到最小意外原则,它就是一场不合格的灾难。当我在 MATLAB 中编写计算机视觉代码时,我很少参考文档。在使用 OpenCV 时,我在浏览器选项卡中永久打开了文档。

OpenCV 的构建似乎考虑到了最大惊喜的原则!这一切都始于默认的 BGR 像素格式。它不适用于使用标准 RGB 像素格式的库。例如,当您在 OpenCV 中使用imread读取图像后尝试使用matplotlib显示图像时,结果看起来很有趣。

“当其他人及其阿姨都使用 RGB 时,为什么不使用 RGB?”

这是我在几个月前的一次会议上遇到 OpenCV 的创始人 Gary Bradski 博士时问他的问题,尽管我忽略了关于每个人和他们的阿姨使用 RGB 的部分。他用另一个问题回答了我的问题。

“为什么美国标准的铁路轨距是 4 英尺 8.5 英寸?”

这个问题的答案当然是“因为罗马马的屁股!”

对于不知道这个不太真实的故事的人,我从snopes复制了以下内容

abb1e7e0-7c7d-11ed-8abf-dac502259ad0.png

为什么他们在 OpenCV 中选择 BGR 颜色空间?

OpenCV 的早期开发人员之所以选择 BGR 颜色格式,是因为当时 BGR 颜色格式在相机制造商和软件提供商中很流行。例如在 Windows 中,当使用COLORREF指定颜色值时,它们使用 BGR 格式0x00bbggrr。

BGR 是出于历史原因做出的选择,现在我们必须接受它。换句话说,BGR 是 OpenCV 中的马的屁股。^_^

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RGB
    RGB
    +关注

    关注

    4

    文章

    763

    浏览量

    57406
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40772

原文标题:冷知识 | 为什么OpenCV使用BGR颜色格式?

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何实现PIL和OpenCV之间图像数据的转换呢?

    PIL图像数据格式转换成OpenCV图像数据格式
    的头像 发表于 02-25 13:43 494次阅读

    【米尔-全志T113-i开发板试用】基础开发环境配置和opencv-mobile移植测试

    /highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> int main() { cv::Mat bgr = cv
    发表于 01-23 15:13

    在全志H616核桃派上实现USB摄像头的OpenCV颜色检测

    像素格式颜色还是那个颜色,只是描述颜色用的参数变了。h代表色调,s代表饱和度,v代表明度,比使用rgb格式更方便计算与思考。
    发表于 01-22 10:10

    在核桃派上实现USB摄像头的OpenCV颜色检测

    在前几周的文章中已经介绍过如何在核桃派上用OpenCV读取图像并显示到pyqt5的窗口上,这里在上一篇文章的基础上,给开发板加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。
    的头像 发表于 01-20 17:50 487次阅读
    在核桃派上实现USB摄像头的<b class='flag-5'>OpenCV</b><b class='flag-5'>颜色</b>检测

    【米尔-全志T113-i开发板试用】基础开发环境配置和opencv-mobile移植测试

    /highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> int main() { cv::Mat bgr = cv
    发表于 12-27 20:04

    条形液晶屏有哪些颜色模式?

    条形液晶屏有哪些颜色模式? 条形液晶屏的颜色模式主要取决于屏幕的制造工艺和显示技术。一般来说,液晶屏的颜色模式主要有RGB和BGR两种。 RGB模式是传统的显示模式,它使用红绿蓝三种基
    的头像 发表于 11-14 14:14 247次阅读

    OpenCV4.8+YOLOv8对象检测C++推理演示

    自从YOLOv5更新成7.0版本,YOLOv8推出以后,OpenCV4.6以前的版本都无法再加载导出ONNX格式模型了,只有OpenCV4.7以上版本才可以支持最新版本YOLOv5与YOLOv8模型的推理部署。首先看一下最新版本
    的头像 发表于 09-27 11:07 696次阅读
    <b class='flag-5'>OpenCV</b>4.8+YOLOv8对象检测C++推理演示

    Opencv调用bmcv_image_vpp_convert做缩放或者颜色空间转换,得到的图片不一致是为什么?

    Opencv 读取图片后,cvMat 转为bmimage之 后, 调用 bmcv_image_vpp_convert 做缩放或者颜色空间转换,得到的图片不一致
    发表于 09-19 07:41

    如何将host上的bgr planar cv::Mat变成host上的BGR packed cv::Mat?

    如何将host上的bgr planar cv::Mat变成host上的BGR packed cv::Mat?
    发表于 09-19 07:33

    关于BM_OPENCV相关问题

    使用libjpeg-turbo,而bm_opencv采用了bm168x芯片中的jpeg硬件加速单元进行解码。 误差主要来自解码输出YUV转换到BGR的过程中。 1)YUV需要上采样到YUV444才能进行BGR转换。这个
    发表于 09-19 07:28

    OpenCV中的BGR格式,在libyuv中对应的那个格式OpenCV中的RGB格式呢?

    OpenCV中的BGR格式,在libyuv中对应的那个格式OpenCV中的RGB格式呢?
    发表于 09-19 06:00

    用迅为RK3568开发板使用OpenCV处理图像颜色通道提取ROI

    图像中存有三个通道,即 BGR 通道,根据三个颜色通道的亮度值来显示出不同的颜色,通过 imread()函数读取图像文件之后,图像信息会保存到对应的变量中,以下面的代码为例读取到的信息会被保存
    发表于 09-01 10:45

    利用OpenCV进行颜色检测

    关于利用OpenCV进行颜色分类,本文包含了HSV介绍及应用、cv2.inRange及应用、RGB与HSV通道的区别三个方面。
    的头像 发表于 08-18 10:32 855次阅读
    利用<b class='flag-5'>OpenCV</b>进行<b class='flag-5'>颜色</b>检测

    iTOP-3568开发板使用OpenCV处理图像-颜色转换

    的源文件 code,转换的色彩空间,在 opencv 中有超过 150 种颜色空间转换方法,但是经常用的只有 BGR-灰度图和 BGR-HSV BG
    发表于 08-14 10:46

    Python OpenCV教程:特定颜色的检测

    在这篇OpenCV Python文章中,我想展示OpenCV中的基本颜色检测示例。 我们用颜色空间或颜色模型来表示计算机上的
    的头像 发表于 07-03 10:30 646次阅读