Ответ 1
BGR и RGB не являются цветовыми пространствами, они просто обозначают порядок различных цветовых каналов. cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
не выполняет никаких вычислений (например, преобразование, скажем, HSV), а просто переключает порядок. Любой порядок был бы действительным - в действительности, три значения (красное, зеленое и синее) сложены так, чтобы образовать один пиксель. Вы можете расположить их по своему усмотрению, пока вы указываете дисплею, какой порядок вы им дали.
OpenCV imread
, imwrite
и imshow
действительно все работают с порядком BGR, поэтому нет необходимости изменять порядок, когда вы читаете изображение с помощью cv2.imread
, а затем хотите показать его с помощью cv2.imshow
.
Хотя BGR постоянно используется в OpenCV, большинство других библиотек обработки изображений используют порядок RGB. Если вы хотите использовать matplotlib
imshow
, но читать изображение с помощью OpenCV, вам нужно будет конвертировать из BGR в RGB.