cv2.imshow() 和 matplotlib.pyplot.show() 中的灰度图像不同
grayscale image different in cv2.imshow() and matplotlib.pyplot.show()
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
数学绘图库:3.4.3
这是 matplotlib
的行为。它会找到您图片的最小值和最大值,将它们设为黑白,然后缩放介于两者之间的所有内容。
这对于可能具有整数或浮点类型且值范围介于 0.0 和 1.0 或 0 .. 255 或其他任何值之间的任意数据很有用。
OpenCV 没有这种自动缩放。它有固定的规则。如果是浮点数,0.0 是黑色,1.0 是白色。如果是uint8,范围是0 .. 255.
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
数学绘图库:3.4.3
这是 matplotlib
的行为。它会找到您图片的最小值和最大值,将它们设为黑白,然后缩放介于两者之间的所有内容。
这对于可能具有整数或浮点类型且值范围介于 0.0 和 1.0 或 0 .. 255 或其他任何值之间的任意数据很有用。
OpenCV 没有这种自动缩放。它有固定的规则。如果是浮点数,0.0 是黑色,1.0 是白色。如果是uint8,范围是0 .. 255.