Numpy可以用于处理任意维度的数组,这篇文章我们分享一些对图像的基本操作,主要通过对数组的切片实现。
首先分享一下Python的切片操作,首先是一维数组的切片 ,该操作与列表的切片非常相似。
代码:
import numpy as np
# 使用array函数,通过list创建数组对象
L = np.array([1,2,3,4,5])
print(L[1:3]) # 输出下标从1到3的元素
print(L[2:]) # 输出下标为2及以后的元素
print(L[:4]) # 输出下标为4及之前的元素
print(L[::-1]) # 逆序输出
输出结果:
[2 3]
[3 4 5]
[1 2 3 4]
[5 4 3 2 1]
然后是对二维数组的切片操作,与一维数组一样,就是维度发生了变化
代码:
import numpy as np
# 创建二维数组
L = np.array([[1,2,3],[4,5,6]])
print(L[:2,1:])
print(L[:,:2])
print(L[1,:2])
print(L[::-1][::-1])
输出结果:
[[2 3]
[5 6]]
[[1 2]
[4 5]]
[4 5]
[[1 2 3]
[4 5 6]]
明白了数组的切片操作,那么我们就可以利用其对图像进行处理
首先我们需要加载一下图片
import matplotlib.pyplot as plt
image = plt.imread('meinv.png')
plt.imshow(image)
plt.show() #输出图像
实现图像的水平翻转
plt.imshow(image[:,::-1])
plt.show()
实现图像的垂直翻转
plt.imshow(image[::-1])
plt.show()
实现图像内特定区域的截取,作为正人君子,我们来截取一下小姐姐漂亮的脸蛋哈,主要是通过对xy轴坐标的截取来实现的。
plt.imshow(image[:500,490:890])
plt.show()
将图像转化为灰度图,通过计算RGB(图片的像素,元素取值为1~255,颜色逐渐由暗变亮)的加权平均值
weights = [0,0.2]
g_image = np.dot(image[..., :2], weights)
plt.imshow(g_image)
plt.show()
最后扯一句题外话哈,个人感觉虽然学习很枯燥,但Python的学习还是有很多乐趣的,正在学习Python的小伙伴一定要加油,不要轻易放弃啊!