2024-04-24 19:10:38 发布
网友
我有一个RGB图像。我想把它转换成numpy数组。我做了如下的事情
im = cv.LoadImage("abc.tiff") a = numpy.asarray(im)
它创建一个没有形状的数组。我想它是一个iplimage对象。
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'>
<class 'numpy.ndarray'>
您可以使用较新的OpenCV python接口(如果我没有弄错的话,它是从OpenCV 2.2开始提供的)。它本机使用numpy数组:
import cv2 im = cv2.imread("abc.tiff",mode='RGB') print type(im)
结果:
<type 'numpy.ndarray'>
PIL(Python Imaging Library)和Numpy一起工作得很好。
我使用以下函数。
“Image.fromarray”有点难看,因为我将传入的数据剪裁为[0255],转换为字节,然后创建一个灰度图像。我大多穿灰色的衣服。
RGB图像应该类似于:
您也可以使用matplotlib来完成此操作。
输出:
<class 'numpy.ndarray'>
您可以使用较新的OpenCV python接口(如果我没有弄错的话,它是从OpenCV 2.2开始提供的)。它本机使用numpy数组:
结果:
相关问题 更多 >
编程相关推荐