cv2 BGR 转 RGB 格式 作者:马育民 • 2020-04-30 23:37 • 阅读:10207 # 介绍 opencv读取的图片,是BGR顺序,与现在主流格式RGB不同,所以用cv2读取图片后,不能直接用 PIL 或 matplotlib 显示,否则颜色不正确。 [OpenCV为什么用BGR格式](https://www.malaoshi.top/show_1EF5RICfH60u.html "OpenCV为什么用BGR格式") ### 例子 原图: [](https://www.malaoshi.top/upload/0/0/1EF5RBWxrTqr.jpg) cv2读取图片后,直接用 PIL 显示: ``` import cv2 from PIL import Image background=cv2.imread("/Users/mym/Desktop/可删除/QQ20200428-151456.jpg") print(background.shape) Image.fromarray(background) ``` 结果如下图: [](https://www.malaoshi.top/upload/0/0/1EF5RILqUz9A.png) 所以需要将 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) ``` 原文出处:http://malaoshi.top/show_1EF5RIOvxgZF.html