cv2 BGR 转 RGB 格式

介绍

opencv读取的图片,是BGR顺序,与现在主流格式RGB不同,所以用cv2读取图片后,不能直接用 PIL 或 matplotlib 显示,否则颜色不正确。

OpenCV为什么用BGR格式

例子

原图:

cv2读取图片后,直接用 PIL 显示:

import cv2
from PIL import Image

background=cv2.imread("/Users/mym/Desktop/可删除/QQ20200428-151456.jpg")
print(background.shape)

Image.fromarray(background)

结果如下图:

所以需要将 BGR 格式 转 RGB 格式,才能正常显示

第一种 BGR 转 RGB 方式

通过 cv2.cvtColor() 函数转换

import cv2
from PIL import Image

background=cv2.imread("/Users/mym/Desktop/可删除/QQ20200428-151456.png")
print(background.shape)


background2 = cv2.cvtColor(background, cv2.COLOR_BGR2RGB)
Image.fromarray(background2)

第二种 BGR 转 RGB 方式

通过 numpy 倒序

import cv2
from PIL import Image

background=cv2.imread("/Users/mym/Desktop/可删除/QQ20200428-151456.png")
print(background.shape)

background2=background[:,:,::-1]
Image.fromarray(background2)

原文出处:/show_1EF5RIOvxgZF.html