NumPy可以读取、处理和保存图像。NumPy也可以用于更复杂的图像处理任务,如图像分割、特征提取、图像增强等。由于NumPy的强大和灵活性,它是进行图像处理和分析的一个很好的工具。本文使用Python NumPy进行图像处理,以及相关示例代码。

1、读取图像

需要使用图像处理库来读取图像文件,如Pillow,并将其转换为NumPy数组。

from PIL import Image
import numpy as np

image = Image.open("cjavapy.jpg")
image_array = np.array(image)

# 显示图像
plt.imshow(image_array)
plt.show()

2、保存图像

使用 NumPy 处理后的图像可以再次转换为Pillow图像

代码如下,

from PIL import Image
import numpy as np

image = Image.open("cjavapy.jpg")
image_array = np.array(image)

# image_array 是一个 NumPy 数组
# 对 image_array NumPy 数组处理后保存
# 将 NumPy 数组转换为 Pillow 图像
pillow_image = Image.fromarray(array)

# 现在可以使用 Pillow 的方法处理图像
# 保存图像
pillow_image.save('output_image.jpg')

3、转换为灰度图

可以通过将RGB值转换为灰度值来简化图像处理。

代码如下,

from PIL import Image
import numpy as np

image = Image.open("cjavapy.jpg")
image_array = np.array(image)

# 将彩色图转换为灰度图
def rgb_to_gray(rgb):
    return np.dot(rgb[..., :3], [0.2989, 0.5870, 0.1140])

gray_image = rgb_to_gray(image_array)

# 显示灰度图
plt.imshow(gray_image, cmap=plt.get_cmap('gray'))
plt.show()

4、图像亮度调整

可以通过乘以一个常数来调整图像的亮度。

代码如下,

from PIL import Image
import numpy as np

image = Image.open("cjavapy.jpg")
image_array = np.array(image)

# 调整亮度(1.5表示增加50%的亮度)
brightened_image = image_array * 1.5

# 确保数值在合适的范围内
brightened_image = np.clip(brightened_image, 0, 255).astype(np.uint8)

# 显示调整后的图像
plt.imshow(brightened_image)
plt.show()

5、图像裁剪

可以通过数组切片来裁剪图像。

代码如下,

from PIL import Image
import numpy as np

image = Image.open("cjavapy.jpg")
image_array = np.array(image)

# 裁剪图像(例如裁剪坐标100,100到200,200的区域)
cropped_image = image_array[100:200, 100:200]

# 显示裁剪后的图像
plt.imshow(cropped_image)
plt.show()

推荐文档