如何使用misc.imread将图像切割成红色,绿色和蓝色通道

如何使用misc.imread将图像切割成红色,绿色和蓝色通道,第1张

概述我正在尝试将图像切割成RGB,我在绘制这些图像时遇到问题.我使用此功能从某个文件夹中获取所有图像:def get_images(path, image_type): image_list = [] for filename in glob.glob(path + '/*'+ image_type): im=misc.imread(filename,

我正在尝试将图像切割成RGB,我在绘制这些图像时遇到问题.
我使用此功能从某个文件夹中获取所有图像:

def get_images(path,image_type):image_List = []for filename in glob.glob(path + '/*'+ image_type):    im=misc.imread(filename,mode='RGB')    image_List.append(im)return image_List

这个函数创建了4d数组(30,1536,2048,3),我很确定第一个值代表图像数量,第二个和第三个是维度,第三个是RGB值.

在我获得所有图像后,我将它们存储为numpy数组

image_List = get_images('C:\HDR\images','.jpg')temp = np.array(image_List)

之后我尝试使用简单的切片来从这些图像中获取特定的颜色:

red_images = temp[:,:,0]green_images = temp[:,1]blue_images = temp[:,2]

当我打印出值时,一切似乎都很好.

print(temp[11,125,311,:])print(red_images[11,311])print(green_images[11,311])print(blue_images[11,311])

我得到以下内容:

[105  97  76]1059776

到目前为止,一切似乎都很好,但是当我尝试显示图像时会出现问题.我使用matplotlib.pyplot.imshow来显示它,我得到的图像如下:

这是合理的,因为我选择红色:

 plt.imshow(temp[29,0])

但当我将其更改为不同的颜色通道时,如下所示:

plt.imshow(temp[29,2])

我得到这样的图像:

我的问题很简单.这里发生了什么?

最佳答案我认为matplotlib只是将每个通道(即强度)视为“热图”.

将颜色贴图传递给imshow函数,以便告诉它如何为图像着色:

plt.imshow(image_slice,cmap = plt.cm.gray)

编辑

@mrGreenbrown响应你的评论,我假设你使用的misc.imread函数来自scipy,即scipy.misc.imread.该功能与PIL没有什么不同.见scipy.misc.imread docs.感谢@dai指出这一点.

任何图像的单个通道都是强度.它没有颜色.对于以RGB颜色空间表示的图像,通过“混合”红色,绿色和蓝色的量(由相应通道的强度给出)来获得颜色.单个通道无法表达颜色.

发生的事情是默认情况下Matplotlib将强度显示为热图,因此显示“颜色”.

当您将单个通道保存为JPEG格式的图像时,该功能仅复制单个通道3次,以便R,G和B通道都包含相同的强度.这是典型的行为,除非您以pgm格式保存,可以处理单通道灰度图像.当您尝试将具有相同通道重复3次的此图像可视化时,由于红色,绿色和蓝色的贡献在每个像素处相同,因此图像显示为灰色.

将plt.cm.gray传递给cmap参数只是告诉imshow不要对颜色进行“颜色编码”.因此,更亮的像素(接近白色的像素)意味着在那些位置存在“更多”的“颜色”.

如果需要颜色,则必须复制3通道图像,并将其他通道设置为0.

例如,要将红色通道显示为“红色”:

# Assuming I is numpy array with 3 channels in RGB orderI_red = image.copy()  # Duplicate imageI_red[:,1] = 0    # Zero out contribution from greenI_red[:,2] = 0    # Zero out contribution from blue

stackoverflow here中的相关问题. 总结

以上是内存溢出为你收集整理的如何使用misc.imread将图像切割成红色,绿色和蓝色通道全部内容,希望文章能够帮你解决如何使用misc.imread将图像切割成红色,绿色和蓝色通道所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存