为什么会出现这种颜色反转?

Why this color reversal?

我正在学习这门计算机视觉课程:https://in.udacity.com/course/introduction-to-computer-vision--ud810

老师解释了高斯滤波器如何导致图像模糊。讲师使用 matlab 来演示它,但我使用 python 3 和 opencv。我运行以下代码:

import cv2
from matplotlib import pyplot as pl

image = cv2.imread("Desert.jpg")
blur = cv2.GaussianBlur(image,(95,95),5)
cv2.imshow("desert", image)
pl.imshow(blur)
pl.xticks([]), pl.yticks([])
pl.show()

这是原图:

这是 "blur" 图片:

图像模糊,毫无疑问。但是颜色是如何互换的?山是蓝的,天是砖红的?

因为你用 opencv 画了一个,用 matplotlib 画了另一个。

给出here的解释如下:

There is a difference in pixel ordering in OpenCV and Matplotlib. OpenCV follows BGR order, while matplotlib likely follows RGB order.

由于您使用 opencv 读取和显示图像,它是按 BGR 顺序排列的,您没有发现任何错误。但是当你用 matplotlib 显示它时它认为图像是 RGB 格式并且它改变了蓝色和红色通道的顺序。