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

    文章

    797

    浏览量

    58345
  • OpenCV
    +关注

    关注

    29

    文章

    625

    浏览量

    41223

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

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

收藏 人收藏

    评论

    相关推荐

    基于OPENCV的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

    摄像头)1、安装python3-opencvaptinstallpython3-opencv2、查看摄像头支持的格式与分辨率root@de
    的头像 发表于 11-07 09:03 713次阅读
    基于<b class='flag-5'>OPENCV</b>的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板

    OpenCV图像识别C++代码

    安装OpenCV库 首先,您需要在您的计算机上安装OpenCV库。您可以从OpenCV官网下载预编译的库或从源代码编译。安装完成后,确保将OpenCV的头文件和库文件添加到您的项目中。
    的头像 发表于 07-16 10:42 1669次阅读

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV
    的头像 发表于 07-16 10:38 904次阅读

    opencv的主要功能有哪些

    OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了大量的计算机视觉算法和工具。以下是OpenCV的主要功能: 图像处理
    的头像 发表于 07-16 10:35 1273次阅读

    emWin转RGB565颜色失真怎么解决?

    我今天测试了一下一张纯色图片RGB24 的格式 颜色值:0xe9e9e9,用ST的BmpCvtST.exe转出来RGB565格式的 里面全是0xE75C。 用Img2Lcd转出来的是0xEF5D
    发表于 04-24 06:31

    【米尔-全志T113-i开发板试用】发布opencv-mobile米尔t113i专享预编译包

    ); fclose(fp); return (strncmp(buf, \"sun8iw20\", 8) == 0); } opencv highgui 模块整合t113-i
    发表于 02-25 20:23

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

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

    【米尔-全志T113-i开发板试用】JPG硬件编码的实现、YUV转换neon加速和对比测试

    基于opencv-mobile的jpg软件编码程序,读取图片,然后保存为新的jpg cv::Mat bgr = cv::imread(\"in.jpg\", 1); // encode jpg cv
    发表于 02-12 14:06

    【米尔-全志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 878次阅读
    在核桃派上实现USB摄像头的<b class='flag-5'>OpenCV</b><b class='flag-5'>颜色</b>检测

    可视可交互!H618上用OpenCV读取图像显示到PyQt5窗口上

    的labelcap.read函数读到的是bgr格式的,需要先转为rgb格式rgbImage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)将图像转为Q
    发表于 01-10 09:55

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

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

    OpenCV4.8 CUDA编程代码教程

    OpenCV4支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下。
    的头像 发表于 12-05 09:56 960次阅读
    <b class='flag-5'>OpenCV</b>4.8 CUDA编程代码教程

    OpenCV对openEuler提供上游原生支持

    2023年11月17日,OpenCV社区正式接纳openEuler作为持续集成(Continuous Integration,CI)系统的操作系统之一,对openEuler提供上游原生支持
    的头像 发表于 11-20 09:14 801次阅读