【问题标题】:RGB image display in Matplotlib: plt.imshow returns a blue image [duplicate]Matplotlib 中的 RGB 图像显示:plt.imshow 返回蓝色图像 [重复]
【发布时间】:2019-07-24 08:34:42
【问题描述】:

我正在尝试使用 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)

然后,当我尝试通过以下方式可视化图像时:

plt.imshow(pixels)
plt.show()

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

【问题讨论】:

    标签: opencv matplotlib


    【解决方案1】:

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

    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    
    pixels = np.array(image)
    
    plt.imshow(pixels)
    plt.show()
    

    【讨论】:

    • "pixels = np.array(image)" 为什么我们需要这个?谢谢!
    • 这不是必须的,别担心。
    【解决方案2】:

    你可以直接用这条线将BGR图像转换为RGB:

    image = cv2.imread("path/to/file/image.jpg")[:,:,::-1]
    

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 2017-05-07
      • 2015-09-26
      • 2017-02-25
      • 2021-01-08
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多