改变图像的颜色(重新缩放)。 Scikit图像
The changing a color of image (rescale). Scikit-image
为什么我在 scikit 图像中使用重新缩放时图像的颜色会发生变化?
import matplotlib.pyplot as plt
from skimage.transform import rescale
im = imread('C:/abc.jpg')
plt.imshow(im)
plt.show()
im_rescaled = rescale(im , 0.25)
plt.imshow(im_rescaled)
plt.show()
rescale
不知道你传的是二维彩色图片。当你加载它时,它是一个形状数组 (100, 100, 3),其中最终轴的 3 个元素是红色、绿色和蓝色通道。默认情况下,rescale
沿 所有 轴重新缩放,因此您最终得到形状为 (25, 25, 1) 的图像。 Matplotlib 忽略了这个最终轴并使用其默认颜色图 viridis 将其渲染为灰度图像,这就是它看起来是绿色的原因。
为了使重新缩放仅在行轴和列轴上起作用,而不是在通道轴上起作用,请使用
im_rescaled = rescale(im, 0.25, multichannel=True)
这将为您提供一个形状为 (25, 25, 3) 的重新缩放图像,所有三个颜色通道都将按预期进行。
您可以在 scikit-image API docs 中阅读有关重新缩放 API 的更多信息。
为什么我在 scikit 图像中使用重新缩放时图像的颜色会发生变化?
import matplotlib.pyplot as plt
from skimage.transform import rescale
im = imread('C:/abc.jpg')
plt.imshow(im)
plt.show()
im_rescaled = rescale(im , 0.25)
plt.imshow(im_rescaled)
plt.show()
rescale
不知道你传的是二维彩色图片。当你加载它时,它是一个形状数组 (100, 100, 3),其中最终轴的 3 个元素是红色、绿色和蓝色通道。默认情况下,rescale
沿 所有 轴重新缩放,因此您最终得到形状为 (25, 25, 1) 的图像。 Matplotlib 忽略了这个最终轴并使用其默认颜色图 viridis 将其渲染为灰度图像,这就是它看起来是绿色的原因。
为了使重新缩放仅在行轴和列轴上起作用,而不是在通道轴上起作用,请使用
im_rescaled = rescale(im, 0.25, multichannel=True)
这将为您提供一个形状为 (25, 25, 3) 的重新缩放图像,所有三个颜色通道都将按预期进行。
您可以在 scikit-image API docs 中阅读有关重新缩放 API 的更多信息。