Numpy ndarray 存储成图像

Numpy ndarray 存储成图像

在数据处理过程中,我们经常需要将Numpy的ndarray对象存储为图像文件,或者将图像文件读取成Numpy数组。本文主要介绍如何使用Numpy来实现这些功能。

阅读更多:Numpy 教程

Numpy数组转换成图像文件

Numpy数组可以转换为图像文件,主要有两种方法:

使用Pillow库

Pillow库是Python中一个非常流行的图像处理库,它提供了许多图像处理功能。使用Pillow库可以方便地将Numpy数组转换为图像文件,代码如下:

from PIL import Image
import numpy as np

# 创建一个随机的3通道图像,大小为100x100
img_np = np.random.randint(0, 255, size=(100, 100, 3)).astype(np.uint8)

# 将Numpy数组转换为Image对象
img = Image.fromarray(img_np)

# 保存为png格式的图像文件
img.save('test.png')
Python

上面的代码中,我们首先创建一个大小为100×100、3通道的随机Numpy数组。注意,此处我们需要将数据类型转换为uint8类型,因为图像文件的存储格式通常是8位无符号整数。然后我们将Numpy数组转换为Image对象,最后使用save()方法将图像文件存储为png格式的文件。

使用OpenCV库

OpenCV是一个著名的计算机视觉库,提供了大量的图像处理函数。使用OpenCV可以更方便地实现图像文件和Numpy数组的转换。代码如下:

import cv2
import numpy as np

# 创建一个随机的3通道图像,大小为100x100
img_np = np.random.randint(0, 255, size=(100, 100, 3)).astype(np.uint8)

# 保存为png格式的图像文件
cv2.imwrite('test.png', img_np)
Python

上面的代码中,我们首先创建一个大小为100×100、3通道的随机Numpy数组,同样需要将数据类型转换为uint8类型。然后我们使用OpenCV的imwrite()函数将Numpy数组直接保存为png格式的图像文件。

读取图像文件为Numpy数组

与将Numpy数组保存为图像文件类似,我们也可以将一个图像文件读取为Numpy数组。同样有两种方法:

使用Pillow库

实现代码如下:

from PIL import Image
import numpy as np

# 读取png格式的图像文件
img = Image.open('test.png')

# 转换为Numpy数组
img_np = np.asarray(img)
Python

上面的代码中,我们使用Pillow的Image.open()函数读取png格式的图像文件,将其转换为Image对象。然后我们使用numpy.asarray()函数将Image对象转换为Numpy数组。需要注意的是,Pillow读取的图像文件通常为RGB模式,Numpy数组的通道顺序为BGR。

使用OpenCV库

实现代码如下:

import cv2
import numpy as np

# 读取png格式的图像文件
img_np = cv2.imread('test.png')

# 将BGR模式转换为RGB模式
img_np = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
Python

上面的代码中,我们使用OpenCV的imread()函数读取png格式的图像文件,将图像文件直接转换为Numpy数组。需要注意的是,OpenCV读取的图像文件通常为BGR模式,Numpy数组的通道顺序为RGB,因此需要通过cvtColor()函数将它们转换为相同的通道顺序。

总结

本文介绍了使用Numpy将Numpy数组存储为图像文件,以及将图像文件读取为Numpy数组的方法。需要注意的是,在不同的图像处理库中,存在图像存储格式和读取方式的差异,因此在使用时需要留意。同时,如果需要进行图像处理和计算机视觉工作,可以考虑使用更加强大的OpenCV库。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册