利用numpy对图像进行操作

NumPy 提供了强大的数组操作功能,Matplotlib 提供了图像读取和显示的功能,两者结合可以实现图像的翻转、颜色变换、降采样和打马赛克等效果。

Posted by Hilda on March 12, 2025

利用numpy对图像进行操作

利用matplotlib读取图片并显示:

1
2
3
4
5
import numpy as np
import matplotlib.pyplot as plt

fish = plt.imread("fish.png")
plt.imshow(fish)

image-20250312160718257

左右翻转:

1
2
fish1 = fish[:,::-1]
plt.imshow(fish1)

image-20250312160920250

上下翻转:

1
2
fish2 = fish[::-1]
plt.imshow(fish2)

image-20250312161009139

颜色翻转:

1
2
fish3 = fish[:, :, ::-1]
plt.imshow(fish3)

image-20250312161057953

降低精度:

1
2
fish4 = fish[::4, ::4]
plt.imshow(fish4)

image-20250312161156857

打马赛克:

例如给眼睛打马赛克:

1
2
# 首先找到眼睛在哪里
plt.imshow(fish[55:94, 75:115])

image-20250312161357373

1
2
3
# 随机赋值
fish[55:94, 75:115] = np.random.rand(94 - 55, 115 - 75, 3)
plt.imshow(fish)

image-20250312161550022

注:

np.random.rand(94 - 55, 115 - 75, 3): 这部分代码生成一个随机数数组。

  • 94 - 55 = 39: 计算矩形区域的高度 (行数)。
  • 115 - 75 = 40: 计算矩形区域的宽度 (列数)。
  • 3: 指定颜色通道数为 3 (RGB)。