cv2.imshow() 和 matplotlib.pyplot.show() 中的灰度图像不同

问题描述 投票:0回答:1
import cv2 
import numpy as np 
import math
import sys
import matplotlib.pyplot as plt
import utils as ut

imgGray = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)
plt.imshow(imgGray, cmap = 'gray')
plt.show() 


cv2.imshow("",imgGray)
cv2.waitKey(0)
cv2.destroyAllWindows()


sys.exit()

plt.show()结果

cv2.imshow()结果

我以为它们都是一样的。但正如你所看到的,两张图片的灰度不同。 看起来 plt.show() 比 cv2.imshow() 更黑

如何使 plt.show() 中的灰度与 cv2.imshow() 相同?

Python:3.9.6

opencv-python:4.5.3.56

mathplotlib:3.4.3

python opencv matplotlib imshow
1个回答
6
投票

这是

matplotlib
的行为。它会找到图片的最小值和最大值,将其设为黑白,并缩放其间的所有内容。

这对于可能具有整数或浮点类型且值范围在 0.0 和 1.0 之间、或 0 .. 255 或其他任何值之间的任意数据很有用。

OpenCV 没有这样的自动缩放功能。它有固定的规则。如果是浮点数,0.0 是黑色,1.0 是白色。如果是 uint8,范围是 0 .. 255.

© www.soinside.com 2019 - 2024. All rights reserved.