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

2024-04-24 19:10:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个RGB图像。我想把它转换成numpy数组。我做了如下的事情

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

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


Tags: 对象图像numpyrgb数组事情cv形状
3条回答

PIL(Python Imaging Library)和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”有点难看,因为我将传入的数据剪裁为[0255],转换为字节,然后创建一个灰度图像。我大多穿灰色的衣服。

RGB图像应该类似于:

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

您也可以使用matplotlib来完成此操作。

from matplotlib.image import imread

img = imread('abc.tiff')
print(type(img))

输出: <class 'numpy.ndarray'>

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

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

结果:

<type 'numpy.ndarray'>

相关问题 更多 >