Reputation: 14053
Why OpenCV
using BGR
colour space instead of RGB
. We all know that RGB
is the convenient colour model for most of the computer graphics. Is there any reason behind OpenCV
BGR
colour space?.
Upvotes: 84
Views: 51252
Reputation: 1032
As Satya Mallick, CEO, OpenCV, blogged in 2015:
"The reason why the early developers at OpenCV chose BGR color format is probably that back then BGR color format was popular among camera manufacturers and software providers. E.g. in Windows, when specifying color value using COLORREF they use the BGR format
0x00bbggrr
.""BGR was a choice made for historical reasons and now we have to live with it. In other words, BGR is the horse’s ass in OpenCV."
Upvotes: 99
Reputation: 13461
Why? For historical reasons. In 1987, Microsoft Windows ran on the IBM PS/2, and an early IBM video display controller, VGA, made use of the INMOS 171/176 RAMDAC chip, which was easier to use when images were stored in BGR format.
See details at Why BGR color order - Retrocomputing Stack Exchange
Upvotes: 7
Reputation: 194
OpenCV reads in images in BGR format (instead of RGB) because when OpenCV was first being developed, BGR color format was popular among camera manufacturers and image software providers. The red channel was considered one of the least important color channels, so was listed last, and many bitmaps use BGR format for image storage. However, now the standard has changed and most image software and cameras use RGB format, which is why, in programs, it's good practice to initially convert BGR images to RGB before analyzing or manipulating any images.
Upvotes: 15