日常開發和交流時,我們習慣將圖片的顏色通道按照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。