Hyu*_* Go 4 python opencv matplotlib imshow
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()
Run Code Online (Sandbox Code Playgroud)
plt.show() 结果
cv2.imshow() 结果
我以为他们两个都是一样的。但正如你所看到的,两张图片的灰度不同。似乎 plt.show() 比 cv2.imshow() 更黑
如何使 plt.show() 中的灰度与 cv2.imshow() 相同?
蟒蛇:3.9.6
opencv-python:4.5.3.56
数学图库:3.4.3
这是 的行为matplotlib
。它会找到图片的最小值和最大值,将其设为黑白,并缩放其间的所有内容。
这对于可能具有整数或浮点类型且值范围在 0.0 和 1.0 之间、或 0 .. 255 或其他任何值之间的任意数据很有用。
您可以使用vmin
和vmax
参数自行设置这些限制:
plt.imshow(imgGray, cmap='gray', vmin=0, vmax=255) # if your data ranges is uint8
Run Code Online (Sandbox Code Playgroud)
OpenCV 没有这样的自动缩放功能。它有固定的规则。如果是浮点数,0.0 是黑色,1.0 是白色。如果是 uint8,则范围是 0 .. 255。
要在 OpenCV 中获得此类自动调整范围,您必须在显示之前缩放数据:
normalized = cv.normalize(
data, alpha=0.0, beta=1.0, norm_type=cv.NORM_MINMAX, dtype=cv.CV_32F)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2031 次 |
最近记录: |