这段代码有什么问题?
它修改了值,但当它想给我显示实际修改后的图像时,它会再次给我显示原始图像。我做错了什么吗?
让我用图片来解释一下:
1-原始图像:
的数据
2-修改的图像:
的
从图像的直方图中可以明显看出,值发生了变化,但图片显示的是完全相同的图像。
这是显示此页面的代码。
# Load the image
img = cv2.imread(current_dir + "/img.jpg", cv2.IMREAD_GRAYSCALE)
plt.figure("Original Image", figsize=(6, 6))
plt.subplot(211)
plt.title("Original Image")
plt.imshow(img, "gray")
plt.subplot(212)
hist_full = cv2.calcHist([img], [0], None, [256], [0, 256])
plt.plot(hist_full)
img_min = np.amin(img)
img_max = np.amax(img)
gray_levels = np.arange(256, dtype=np.uint8)
gray_levels[:] = np.uint8(
((gray_levels - img_min) / (img_max - img_min)) * (30 - 0) + 0
)
img_shrunk = cv2.LUT(img, gray_levels)
plt.figure("Shrunk Original Image", figsize=(6, 6))
plt.subplot(211)
plt.title("Shrunk Original Image")
plt.imshow(img_shrunk, "gray")
plt.subplot(212)
hist_full = cv2.calcHist([img_shrunk], [0], None, [256], [0, 256])
plt.plot(hist_full)
字符串
问题出在哪里?
1条答案
按热度按时间jaql4c8m1#
问题是
imshow
会自动设置可视化范围。它不会假设或期望输入在[0-255]范围内。尝试
字符串