点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
来源丨https://learnopencv.com/why-does-opencv-use-bgr-color-format/
翻译整理丨OpenCV与AI深度学习
良好设计的要素之一是最小惊讶原则(又称最小意外原则)。一个好的直观设计让用户不会思考。
当你看到门上的把手时,你想拉它。当你看到一扇带有金属板的门时,你想推它。这些是门的使用者的期望,当门的设计者尊重这些期望时,用户可以在不施加任何精神能量的情况下使用门。但如果设计与用户的期望不一致,那么简单的开门动作就会成为一种心理负担。
OpenCV 是一个非常有用的库,但是说到最小意外原则,它就是一场不合格的灾难。当我在 MATLAB 中编写计算机视觉代码时,我很少参考文档。在使用 OpenCV 时,我在浏览器选项卡中永久打开了文档。
OpenCV 的构建似乎考虑到了最大惊喜的原则!这一切都始于默认的 BGR 像素格式。它不适用于使用标准 RGB 像素格式的库。例如,当您在 OpenCV 中使用imread读取图像后尝试使用matplotlib显示图像时,结果看起来很有趣。
“当其他人及其阿姨都使用 RGB 时,为什么不使用 RGB?”
这是我在几个月前的一次会议上遇到 OpenCV 的创始人 Gary Bradski 博士时问他的问题,尽管我忽略了关于每个人和他们的阿姨使用 RGB 的部分。他用另一个问题回答了我的问题。
“为什么美国标准的铁路轨距是 4 英尺 8.5 英寸?”
这个问题的答案当然是“因为罗马马的屁股!”
对于不知道这个不太真实的故事的人,我从snopes复制了以下内容
为什么他们在 OpenCV 中选择 BGR 颜色空间?
OpenCV 的早期开发人员之所以选择 BGR 颜色格式,是因为当时 BGR 颜色格式在相机制造商和软件提供商中很流行。例如在 Windows 中,当使用COLORREF指定颜色值时,它们使用 BGR 格式0x00bbggrr。
BGR 是出于历史原因做出的选择,现在我们必须接受它。换句话说,BGR 是 OpenCV 中的马的屁股。^_^
好消息!
小白学视觉知识星球
开始面向外开放啦👇👇👇
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~