如何将 RGB 图像转换为 numpy 数组?

新手上路,请多包涵

我有一个 RGB 图像。我想将它转换为 numpy 数组。我做了以下

im = cv.LoadImage("abc.tiff")
a = numpy.asarray(im)

它创建一个没有形状的数组。我假设它是一个 iplimage 对象。

原文由 Shan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 487
2 个回答

您可以使用更新的 OpenCV python 接口(如果我没记错的话,它从 OpenCV 2.2 开始可用)。它本机使用 numpy 数组:

 import cv2
im = cv2.imread("abc.tiff",mode='RGB')
print(type(im))

结果:

 <type 'numpy.ndarray'>

原文由 Andrey Kamaev 发布,翻译遵循 CC BY-SA 4.0 许可协议

PIL(Python 图像库)和 Numpy 可以很好地协同工作。

我使用以下功能。

 from PIL import Image
import numpy as np

def load_image( infilename ) :
    img = Image.open( infilename )
    img.load()
    data = np.asarray( img, dtype="int32" )
    return data

def save_image( npdata, outfilename ) :
    img = Image.fromarray( np.asarray( np.clip(npdata,0,255), dtype="uint8"), "L" )
    img.save( outfilename )

‘Image.fromarray’ 有点难看,因为我将传入数据剪辑为 [0,255],转换为字节,然后创建灰度图像。我主要以灰色工作。

RGB 图像类似于:

 out_img = Image.fromarray( ycc_uint8, "RGB" )
out_img.save( "ycc.tif" )

原文由 David Poole 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题