Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x matplotlib中的imhsow不';t显示与opencv相同_Python 3.x_Opencv_Matplotlib - Fatal编程技术网

Python 3.x matplotlib中的imhsow不';t显示与opencv相同

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

看起来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.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()