【问题标题】:grayscale image different in cv2.imshow() and matplotlib.pyplot.show()cv2.imshow() 和 matplotlib.pyplot.show() 中的灰度图像不同
【发布时间】:2021-11-07 09:48:09
【问题描述】:
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

【问题讨论】:

  • 对我来说工作正常。尝试导入图像两次
  • @farhan_jatt 你的意思是,我读了两次??
  • 又是这个?这不仅被重复了无数次,而且一旦你真正阅读了你使用的东西的文档就很明显了。

标签: python opencv matplotlib opencv-python


【解决方案1】:

这是matplotlib 的行为。它会找到您图片的最小值和最大值,将它们制作成黑白,并缩放介于两者之间的所有内容。

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

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

【讨论】:

  • 不错的答案。您可以考虑提及如何使用 cv2.normalize()OpenCVmatplotlib 一样工作。
  • cv.normalize(src=data, dst=None, alpha=0.0, beta=1.0, norm_type=cv.NORM_MINMAX, dtype=cv.CV_32F)
猜你喜欢
  • 1970-01-01
  • 2018-03-18
  • 2020-03-29
  • 1970-01-01
  • 2023-03-21
  • 2021-03-26
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多