gpt4 book ai didi

python - 强调图像中的蓝色

转载 作者:行者123 更新时间:2023-12-01 01:45:30 25 4
gpt4 key购买 nike

我正在使用 matplotlib 来执行此操作,但由于某种原因,我的代码创建了意外的图像。

import numpy as np
import matplotlib.pyplot as plt
from scipy.misc import imread,imsave


# original image
image1=imread('img.jpg')
plt.imshow(image1)
plt.show()

# empesize the blue in that image
plt.imshow(image1*[0.95,0.95,1])
plt.show()

结果:

上面的图像是原始图像,第二个图像(显示的)是意外的结果。

enter image description here

似乎无论我向向量输入什么值,我都会得到相同的奇怪结果。 为什么?

最佳答案

这个问题与Getting black plots with plt.imshow after multiplying image array by a scalar密切相关.

您可以将 image1.dtype(即 uint8)与 (image1*[0.95,0.95,1]).dtype 进行比较,这是 float

Matplotlib imshow 可以绘制整数值,在这种情况下它们需要在 [0, 255] 范围内或浮点值,在这种情况下它们需要在[0.0, 1.0]范围内。因此,虽然绘制整数值的原始图像工作正常,但由最大 255. 浮点值组成的相乘图像超出了 [0.0, 1.0] 允许的范围> 25500%。因此它大部分是白色的(因为像素值被裁剪为 1.0)。

解决方案是在乘法之后将值转换回uint

image2 = (image1*[0.95,0.95,1]).astype(np.uint8)

或除以255。,

image2 = (image1*[0.95,0.95,1])/255.

您还可以使用plt.Normalize,例如

image2 = plt.Normalize(0,255)(image1*[0.95,0.95,1])

关于python - 强调图像中的蓝色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51389995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com