我正在学习计算机视觉课程:https://in.udacity.com/course/introduction-to-computer-vision--ud810
讲师解释了高斯滤波器如何导致图像模糊。教师使用matlab来演示它,但我使用的是带有opencv的python 3。我运行了以下代码:
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()
这是原始图像:
这就是"模糊"图片:
毫无疑问,图像模糊不清。但颜色是如何互换的?这座山是蓝色的,而天空是砖红色的?
答案 0 :(得分:1)
因为您使用opencv绘制一个,使用matplotlib绘制另一个。
here给出的解释如下:
OpenCV和Matplotlib中的像素排序存在差异。 OpenCV遵循BGR顺序,而matplotlib可能遵循RGB顺序。
由于您使用opencv阅读并显示图像,因此它处于BGR顺序,您没有看到任何错误。但是当你用matplotlib显示它时,它认为图像是RGB格式,它改变了蓝色和红色通道的顺序。