Python 3.x matplotlib中的imhsow不';t显示与opencv相同
看起来matplotlib.pyplot.imhsow(plt.imshow)不显示原始图片,它是否缩放图像的值?我在使用cv2.imhsow和plt.imhsow时发现了差异 我有两幅图像,它们的亮度不同。但是,当使用Python 3.x matplotlib中的imhsow不';t显示与opencv相同,python-3.x,opencv,matplotlib,Python 3.x,Opencv,Matplotlib,看起来matplotlib.pyplot.imhsow(plt.imshow)不显示原始图片,它是否缩放图像的值?我在使用cv2.imhsow和plt.imhsow时发现了差异 我有两幅图像,它们的亮度不同。但是,当使用plt.imshow时,它们的显示是相同的。但是当使用cv2.imhow时,它会正确显示。下面是代码和图片 import cv2 import matplotlib.pyplot as plt img_o = plt.imread('1.jpg') img = plt.imrea
plt.imshow
时,它们的显示是相同的。但是当使用cv2.imhow
时,它会正确显示。下面是代码和图片
import cv2
import matplotlib.pyplot as plt
img_o = plt.imread('1.jpg')
img = plt.imread('2.jpg')
cv2.imshow('img', img)
cv2.imshow('img_o', img_o)
cv2.waitKey(0)
cv2.destroyAllWindows()
plt.gray()
plt.imshow(img)
plt.show()
plt.imshow(img_o)
plt.show()
用于imshow
的图像亮度不同
使用
cv2.imshow
时,它们可以显示为原始版本
plt.imshow
显示的图像上传如下。它们看起来一模一样,看起来好像plt.imshow
忽略了图像的亮度
图像类型为uint8,形状为48 x 48像素。因此matplotlib的
imshow
将使用活动的颜色映射(plt.gray()
)对其进行颜色映射。根据数据的最小值和最大值选择颜色映射规范化。使用颜色栏打印时,这一点变得清晰
import matplotlib.pyplot as plt
img_o = plt.imread('1.jpg')
img = plt.imread('2.jpg')
fig, (ax, ax2) = plt.subplots(ncols=2)
plt.gray()
im1 = ax.imshow(img)
fig.colorbar(im1, ax=ax)
im2 = ax2.imshow(img_o)
fig.colorbar(im2, ax=ax2)
plt.show()
由此我们可以看出,对于第一幅图像,白色表示值70,而对于第二幅图像,白色表示值218。为了在两种情况下使用相同的标准化,并与8位图像一致,可以使用norm=plt.Normalize(0255)
或者,可以将灰度值复制到所有三个RGB通道,以便绘制48x48x3像素阵列。这将被解释为图像(与彩色映射数据相反),并正确显示
import numpy as np
import matplotlib.pyplot as plt
img_o = plt.imread('1.jpg')
img = plt.imread('2.jpg')
img_o = np.dstack((img_o,img_o,img_o))
img = np.dstack((img,img,img))
fig, (ax, ax2) = plt.subplots(ncols=2)
im1 = ax.imshow(img)
im2 = ax2.imshow(img_o)
plt.show()
图像已转换为灰度。这将取决于matplotlib显示的形状(
img.shape
)和数据类型(img.dtype
)。通常,二维阵列在其最小值和最大值之间进行缩放。您可以提供一个,这样人们就可以了解您的问题。谢谢您的建议。我改变了我的问题。我上传了我在imshow上使用的图片。此外,我还上传了由plt.imshow()
显示的图像,我觉得这有点奇怪。
import numpy as np
import matplotlib.pyplot as plt
img_o = plt.imread('1.jpg')
img = plt.imread('2.jpg')
img_o = np.dstack((img_o,img_o,img_o))
img = np.dstack((img,img,img))
fig, (ax, ax2) = plt.subplots(ncols=2)
im1 = ax.imshow(img)
im2 = ax2.imshow(img_o)
plt.show()