Matplotlib 中的 RGB 图像显示:plt.imshow 返回蓝色图像

Lee*_*evo 20 opencv matplotlib

我正在尝试使用 matplotlib 显示 RGB 图像。这是代码:

# import libraries
import numpy as np
import cv2
from matplotlib import pyplot as plt

# use opencv to load the image
image = cv2.imread("path/to/file/image.jpg", 1)

# convert it to numpy array
pixels = np.array(image)
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试使用以下方法可视化图像时:

plt.imshow(pixels)
plt.show()
Run Code Online (Sandbox Code Playgroud)

它返回一张蓝色的图片。我不明白为什么,因为图像是正常的彩色图像。我尝试了多个图像,但问题仍然存在。此外,我的笔记本电脑在工作,我没有遇到任何问题。

小智 19

您正面临这个问题,因为您正在使用 opencv 读取图像,而 opencv 以 BGR 格式而不是 RGB 颜色格式读取和显示图像。而 matplotlib 使用 RGB 颜色格式来显示图像。尝试使用:

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

pixels = np.array(image)

plt.imshow(pixels)
plt.show()
Run Code Online (Sandbox Code Playgroud)


小智 14

您可以直接使用此行将 BGR 图像转换为 RGB:

image = cv2.imread("path/to/file/image.jpg")[:,:,::-1]
Run Code Online (Sandbox Code Playgroud)