我有一个numpy
数组格式(标准OpenCV格式)的灰度图像。正常图像uint8
,所有值都在0到255之间。运行时:
import cv2
cv2.imshow('', image)
我得到:
但是当我跑步时:
from matplotlib import pyplot
pyplot.imshow(image, cmap="gray")
pyplot.show()
我得到:
真正令人奇怪的是,如果我调整pyplot
图像窗口的大小,这些线条伪像的宽度就会改变。这是怎么回事?我不知道它在显示这些工件。
答案 0 :(得分:1)
要消除模糊效果,您可以添加抗锯齿滤镜:
from matplotlib import pyplot
pyplot.imshow(image, cmap="gray", interpolation='hanning')
pyplot.show()
在这种情况下,它不是真正的插值,而是平滑原始数据。
答案 1 :(得分:0)
请注意,当您要使用matplotlib显示灰度图像时,必须正确指定值范围。在您的示例中,最亮的像素值为233,如果您未指定vmin
和vmax
,它将被映射为255。这将使图像看起来比实际的更亮。
import matplotlib.pyplot as plt
import cv2
image = cv2.imread("example2.png")[:,:,0]
fig = plt.figure()
ax1, ax2 = fig.subplots(1,2)
ax1.axis("off")
ax2.axis("off")
ax1.imshow(image, cmap="gray") # rescales value range
ax2.imshow(image, cmap="gray",vmin = 0, vmax = 255) # proper way
plt.show()
在文档here
中有说明