繁体   English   中英

如何使用 imageio imread 从单通道图像(灰度)获取多通道阵列(RGB)?

[英]How to use imageio imread to get a multi channel array (RGB) from a single channel image (grayscale)?

所以我想使用 imageio 将黑白图像读取为 3d 图像。 如果我使用过 opencv,我会使用以下命令,因为 opencv 的默认值是 IMREAD_COLOR: im3d = cv2.imread(im_path)这导致形状 (186, 148, 3)

但是,由于是黑白图像,imageio与opencv相反,默认读取二维。 因此im3d = imageio.imread(im_path)导致形状 (186, 148)。

根据imageio docs,我需要添加“格式”,一个带有“用于读取文件的格式”的字符串。 让 imageio 按照我想要的方式行事。 请参阅此链接: https : //imageio.readthedocs.io/en/stable/userapi.html#imageio.imread

但这解释得太糟糕了! 我经常对文档的糟糕程度感到惊讶。 我无法知道要输入什么作为“格式”才能让 imageio 按照我的意愿行事。 因此,对此的任何帮助将不胜感激!

按照您提供的文档链接,您可以在左侧看到一个非常突出Docs for the formats的导航项Docs for the formats 例如,让我们检查PNG 格式条目,因为 PNG 支持单通道图像。 有一个部分可供阅读的参数:您需要提供适当的 Pillow 格式字符串,对于 RGB 图像,它是'RGB' 要使用的参数称为pilmode 让我们检查一下:

import imageio

im = imageio.imread('path/to/some/singlechannelimage.png')
print(im.shape)

im3d = imageio.imread('path/to/some/singlechannelimage.png', pilmode='RGB')
print(im3d.shape)

如果我为某个单通道 PNG 运行它,我会得到:

(639, 379)
(639, 379, 3)

这就是你想要的,我想。

----------------------------------------
System information
----------------------------------------
Platform:      Windows-10-10.0.16299-SP0
Python:        3.8.5
imageio:       2.9.0
----------------------------------------

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM